<?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>39700</bug_id>
          
          <creation_ts>2010-05-25 17:09:33 -0700</creation_ts>
          <short_desc>Clean up MimeClassInfo and PluginInfo</short_desc>
          <delta_ts>2010-05-27 02:29:33 -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>Other</rep_platform>
          <op_sys>OS X 10.5</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>39819</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>jparent</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>230528</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-05-25 17:09:33 -0700</bug_when>
    <thetext>Clean up MimeClassInfo and PluginInfo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230529</commentid>
    <comment_count>1</comment_count>
      <attachid>57055</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-05-25 17:15:57 -0700</bug_when>
    <thetext>Created attachment 57055
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230547</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-25 18:16:55 -0700</bug_when>
    <thetext>Attachment 57055 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/2457005</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230748</commentid>
    <comment_count>3</comment_count>
      <attachid>57110</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-05-26 10:07:47 -0700</bug_when>
    <thetext>Created attachment 57110
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230749</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-05-26 10:08:13 -0700</bug_when>
    <thetext>The new patch should fix the Chromium build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230782</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-26 11:24:25 -0700</bug_when>
    <thetext>Attachment 57110 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/2529033</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230791</commentid>
    <comment_count>6</comment_count>
      <attachid>57120</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-05-26 11:32:39 -0700</bug_when>
    <thetext>Created attachment 57120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230824</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-26 12:59:15 -0700</bug_when>
    <thetext>Attachment 57120 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/2500036</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230832</commentid>
    <comment_count>8</comment_count>
      <attachid>57129</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-05-26 13:09:20 -0700</bug_when>
    <thetext>Created attachment 57129
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230868</commentid>
    <comment_count>9</comment_count>
      <attachid>57129</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-26 13:50:38 -0700</bug_when>
    <thetext>Comment on attachment 57129
Patch

&gt;  PluginData::~PluginData()
&gt;  {
&gt; -    deleteAllValues(m_plugins);
&gt; -    deleteAllValues(m_mimes);
&gt;  }

It&apos;d be nice to just let the compiler generate this and not define it explicitly at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230876</commentid>
    <comment_count>10</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-05-26 14:01:10 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 57129 [details])
&gt; &gt;  PluginData::~PluginData()
&gt; &gt;  {
&gt; &gt; -    deleteAllValues(m_plugins);
&gt; &gt; -    deleteAllValues(m_mimes);
&gt; &gt;  }
&gt; 
&gt; It&apos;d be nice to just let the compiler generate this and not define it explicitly at all.

The destructor? Sure!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230993</commentid>
    <comment_count>11</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-05-26 16:21:12 -0700</bug_when>
    <thetext>Committed r60258: &lt;http://trac.webkit.org/changeset/60258&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231002</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-26 16:40:52 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/60258 might have broken GTK Linux 32-bit Release and Qt Linux Release
The following changes are on the blame list:
http://trac.webkit.org/changeset/60257
http://trac.webkit.org/changeset/60258</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231009</commentid>
    <comment_count>13</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2010-05-26 17:14:35 -0700</bug_when>
    <thetext>This looks to have introduced a crash in fast/dom/prototype-inheritance-2.html.

I see the crash on the following bots:
* Chromium (linux, win, mac)
* Leopard Intel Debug (Tests)
* Snow Leopard Intel Leaks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231010</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-26 17:15:13 -0700</bug_when>
    <thetext>Is there a URL for the backtrace from the crash?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231011</commentid>
    <comment_count>15</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-05-26 17:20:33 -0700</bug_when>
    <thetext>I think that the crash was caused by another change - looks like Geoff fixed it in http://trac.webkit.org/changeset/60261</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231014</commentid>
    <comment_count>16</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2010-05-26 17:30:31 -0700</bug_when>
    <thetext>Here is the Chromium linux bot stack:
	StackTrace::StackTrace() [0x80eeacf]
	base::(anonymous namespace)::StackDumpSignalHandler() [0x80de9da]
	0x4001c420
	WebCore::collectionIndexedPropertyEnumerator&lt;&gt;() [0x89648a8]
	v8::internal::GetKeysForIndexedInterceptor() [0x81ba92e]

Geoff&apos;s change was fixing a different crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231155</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-27 00:30:06 -0700</bug_when>
    <thetext>Looks like there may be new failures on Qt after this change?
http://build.webkit.org/results/Qt%20Linux%20Release/r60258%20(12428)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231158</commentid>
    <comment_count>18</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-05-27 00:40:41 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Looks like there may be new failures on Qt after this change?
&gt; http://build.webkit.org/results/Qt%20Linux%20Release/r60258%20(12428)/results.html

It seems this patch broke tests. I try to roll-out it locally now to confirm it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231194</commentid>
    <comment_count>19</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2010-05-27 02:29:33 -0700</bug_when>
    <thetext>The crashing of fast/dom/prototype-inheritance-2.html also occurred during my WebKit gardening. I submitted and committed a quick fix in WebKit r60276.

See https://bugs.webkit.org/show_bug.cgi?id=39811</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57055</attachid>
            <date>2010-05-25 17:15:57 -0700</date>
            <delta_ts>2010-05-26 10:07:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39700-20100525171556.patch</filename>
            <type>text/plain</type>
            <size>31001</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDE5OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzMgQEAKKzIwMTAtMDUtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDbGVhbiB1cCBNaW1lQ2xhc3NJbmZvIGFuZCBQbHVnaW5JbmZvCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTcwMAorCisgICAgICAgIFRoaXMgZ2V0
cyByaWQgb2YgYWxsIHRoZSBoZWFwIGFsbG9jYXRpb24gZnJvbSBNaW1lQ2xhc3NJbmZvIGFuZCBQ
bHVnaW5JbmZvLiAKKyAgICAgICAgCisgICAgICAgIEl0IGFsc28gY2hhbmdlcyB0aGUgbV9wbHVn
aW5zIGFuZCBtX21pbWVzIHZlY3RvcnMgaW4gUGx1Z2luRGF0YSB0byBub3QgaG9sZCBoZWFwIGFs
bG9jYXRlZCBNaW1lQ2xhc3NJbmZvCisgICAgICAgIGFuZCBQbHVnaW5DbGFzc0luZm8gb2JqZWN0
cy4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpy
ZWZyZXNoUGx1Z2lucyk6CisgICAgICAgICogcGx1Z2lucy9NaW1lVHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNaW1lVHlwZTo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNaW1lVHlwZTo6
c3VmZml4ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWltZVR5cGU6OmRlc2NyaXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1pbWVUeXBlOjplbmFibGVkUGx1Z2luKToKKyAgICAgICAgKiBwbHVn
aW5zL01pbWVUeXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpNaW1lVHlwZTo6bWltZUNsYXNzSW5m
byk6CisgICAgICAgICogcGx1Z2lucy9NaW1lVHlwZUFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1pbWVUeXBlQXJyYXk6Oml0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6TWltZVR5cGVBcnJh
eTo6Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1pbWVUeXBlQXJyYXk6
Om5hbWVkSXRlbSk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbjo6ZmlsZW5hbWUp
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luOjpkZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW46Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW46Oml0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luOjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6UGx1Z2luOjpuYW1lZEl0ZW0pOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luLmg6
CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW46OnBsdWdpbkluZm8pOgorICAgICAgICAqIHBsdWdp
bnMvUGx1Z2luQXJyYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luQXJyYXk6Omxlbmd0
aCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5BcnJheTo6aXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5BcnJheTo6Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsdWdpbkFycmF5OjpuYW1lZEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luQXJyYXk6
OnBsdWdpbkRhdGEpOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luQXJyYXkuaDoKKyAgICAgICAg
KiBwbHVnaW5zL1BsdWdpbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YTo6
UGx1Z2luRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhOjp+UGx1Z2luRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhOjpzdXBwb3J0c01pbWVUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsdWdpbkRhdGE6OnBsdWdpbk5hbWVGb3JNaW1lVHlwZSk6CisgICAgICAg
ICogcGx1Z2lucy9QbHVnaW5EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToK
KyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5EYXRhOjpkaXNjb25uZWN0UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5E
YXRhOjpwYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGE6OnBsdWdpbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YTo6bWltZXMpOgorICAgICAgICAqIHBsdWdpbnMvY2hy
b21pdW0vUGx1Z2luRGF0YUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkNh
Y2hlOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5DYWNoZTo6cGx1Z2lucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhOjppbml0UGx1Z2lucyk6CisgICAgICAgIChXZWJD
b3JlOjpnZXRQbHVnaW5NaW1lVHlwZUZyb21FeHRlbnNpb24pOgorICAgICAgICAqIHBsdWdpbnMv
Z3RrL1BsdWdpbkRhdGFHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YTo6aW5p
dFBsdWdpbnMpOgorICAgICAgICAqIHBsdWdpbnMvbWFjL1BsdWdpbkRhdGFNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhOjppbml0UGx1Z2lucyk6CisgICAgICAgICogcGx1Z2lu
cy9xdC9QbHVnaW5EYXRhUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YTo6aW5p
dFBsdWdpbnMpOgorICAgICAgICAqIHBsdWdpbnMvd2luL1BsdWdpbkRhdGFXaW4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YTo6aW5pdFBsdWdpbnMpOgorICAgICAgICAqIHBsdWdp
bnMvd3gvUGx1Z2luRGF0YVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGE6Omlu
aXRQbHVnaW5zKToKKwogMjAxMC0wNS0yNSAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShy
ZXZpc2lvbiA2MDE4OCkKKysrIFdlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzc3LDEzICszNzcsMTcgQEAgdm9pZCBQYWdlOjpyZWZyZXNoUGx1Z2lucyhib29sIHJlbG9h
ZCkKIAogICAgIEhhc2hTZXQ8UGFnZSo+OjppdGVyYXRvciBlbmQgPSBhbGxQYWdlcy0+ZW5kKCk7
CiAgICAgZm9yIChIYXNoU2V0PFBhZ2UqPjo6aXRlcmF0b3IgaXQgPSBhbGxQYWdlcy0+YmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICgqaXQpLT5tX3BsdWdpbkRhdGEgPSAwOwor
ICAgICAgICBQYWdlKiBwYWdlID0gKml0OworICAgICAgICAKKyAgICAgICAgLy8gQ2xlYXIgb3V0
IHRoZSBwYWdlJ3MgcGx1Zy1pbiBkYXRhLgorICAgICAgICBwYWdlLT5tX3BsdWdpbkRhdGEgPSAw
OwogCi0gICAgICAgIGlmIChyZWxvYWQpIHsKLSAgICAgICAgICAgIGZvciAoRnJhbWUqIGZyYW1l
ID0gKCppdCktPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2
ZXJzZU5leHQoKSkgewotICAgICAgICAgICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCktPmNvbnRh
aW5zUGx1Z2lucygpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZXNOZWVkaW5nUmVsb2FkLmFw
cGVuZChmcmFtZSk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmICghcmVsb2FkKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICgq
aXQpLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VO
ZXh0KCkpIHsKKyAgICAgICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCktPmNvbnRhaW5zUGx1Z2lu
cygpKQorICAgICAgICAgICAgICAgIGZyYW1lc05lZWRpbmdSZWxvYWQuYXBwZW5kKGZyYW1lKTsK
ICAgICAgICAgfQogICAgIH0KIApJbmRleDogV2ViQ29yZS9wbHVnaW5zL01pbWVUeXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMvTWltZVR5cGUuY3BwCShyZXZpc2lvbiA2MDE4
OCkKKysrIFdlYkNvcmUvcGx1Z2lucy9NaW1lVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDE3ICs0MCwxNyBAQCBNaW1lVHlwZTo6fk1pbWVUeXBlKCkKIAogY29uc3QgU3RyaW5nICZNaW1l
VHlwZTo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGx1Z2luRGF0YS0+bWltZXMoKVtt
X2luZGV4XS0+dHlwZTsKKyAgICByZXR1cm4gbWltZUNsYXNzSW5mbygpLnR5cGU7CiB9CiAKIGNv
bnN0IFN0cmluZyAmTWltZVR5cGU6OnN1ZmZpeGVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9w
bHVnaW5EYXRhLT5taW1lcygpW21faW5kZXhdLT5zdWZmaXhlczsKKyAgICByZXR1cm4gbWltZUNs
YXNzSW5mbygpLnN1ZmZpeGVzOwogfQogCiBjb25zdCBTdHJpbmcgJk1pbWVUeXBlOjpkZXNjcmlw
dGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGx1Z2luRGF0YS0+bWltZXMoKVttX2luZGV4
XS0+ZGVzYzsKKyAgICByZXR1cm4gbWltZUNsYXNzSW5mbygpLmRlc2M7CiB9CiAKIFBhc3NSZWZQ
dHI8UGx1Z2luPiBNaW1lVHlwZTo6ZW5hYmxlZFBsdWdpbigpIGNvbnN0CkBAIC01OSwxMyArNTks
NyBAQCBQYXNzUmVmUHRyPFBsdWdpbj4gTWltZVR5cGU6OmVuYWJsZWRQbHVnCiAgICAgaWYgKCFw
IHx8ICFwLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPmFsbG93UGx1Z2lucyhOb3RBYm91dFRvSW5z
dGFudGlhdGVQbHVnaW4pKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGNvbnN0IFBsdWdpbklu
Zm8gKmluZm8gPSBtX3BsdWdpbkRhdGEtPm1pbWVzKClbbV9pbmRleF0tPnBsdWdpbjsKLSAgICBj
b25zdCBWZWN0b3I8UGx1Z2luSW5mbyo+JiBwbHVnaW5zID0gbV9wbHVnaW5EYXRhLT5wbHVnaW5z
KCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwbHVnaW5zLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGlmIChwbHVnaW5zW2ldID09IGluZm8pCi0gICAgICAgICAgICByZXR1cm4gUGx1Z2lu
OjpjcmVhdGUobV9wbHVnaW5EYXRhLmdldCgpLCBpKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIFBsdWdpbjo6Y3JlYXRlKG1fcGx1Z2luRGF0YS5nZXQoKSwgbWltZUNsYXNzSW5m
bygpLnBsdWdpbkluZGV4KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2Vi
Q29yZS9wbHVnaW5zL01pbWVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL01p
bWVUeXBlLmgJKHJldmlzaW9uIDYwMTg4KQorKysgV2ViQ29yZS9wbHVnaW5zL01pbWVUeXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBQYXNzUmVmUHRyPFBsdWdpbj4gZW5hYmxlZFBsdWdpbigpIGNvbnN0OwogCiAgICAgcHJp
dmF0ZToKKyAgICAgICAgY29uc3QgTWltZUNsYXNzSW5mbyYgbWltZUNsYXNzSW5mbygpIGNvbnN0
IHsgcmV0dXJuIG1fcGx1Z2luRGF0YS0+bWltZXMoKVttX2luZGV4XTsgfQorICAgICAgICAKICAg
ICAgICAgTWltZVR5cGUoUGFzc1JlZlB0cjxQbHVnaW5EYXRhPiwgdW5zaWduZWQgaW5kZXgpOwog
ICAgICAgICBSZWZQdHI8UGx1Z2luRGF0YT4gbV9wbHVnaW5EYXRhOwogICAgICAgICB1bnNpZ25l
ZCBtX2luZGV4OwpJbmRleDogV2ViQ29yZS9wbHVnaW5zL01pbWVUeXBlQXJyYXkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy9NaW1lVHlwZUFycmF5LmNwcAkocmV2aXNpb24gNjAx
ODgpCisrKyBXZWJDb3JlL3BsdWdpbnMvTWltZVR5cGVBcnJheS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUwLDcgKzUwLDcgQEAgUGFzc1JlZlB0cjxNaW1lVHlwZT4gTWltZVR5cGVBcnJheTo6aXRl
bQogICAgIFBsdWdpbkRhdGEqIGRhdGEgPSBnZXRQbHVnaW5EYXRhKCk7CiAgICAgaWYgKCFkYXRh
KQogICAgICAgICByZXR1cm4gMDsKLSAgICBjb25zdCBWZWN0b3I8TWltZUNsYXNzSW5mbyo+JiBt
aW1lcyA9IGRhdGEtPm1pbWVzKCk7CisgICAgY29uc3QgVmVjdG9yPE1pbWVDbGFzc0luZm8+JiBt
aW1lcyA9IGRhdGEtPm1pbWVzKCk7CiAgICAgaWYgKGluZGV4ID49IG1pbWVzLnNpemUoKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIE1pbWVUeXBlOjpjcmVhdGUoZGF0YSwgaW5kZXgp
LmdldCgpOwpAQCAtNjEsOSArNjEsOSBAQCBib29sIE1pbWVUeXBlQXJyYXk6OmNhbkdldEl0ZW1z
Rm9yTmFtZShjCiAgICAgUGx1Z2luRGF0YSAqZGF0YSA9IGdldFBsdWdpbkRhdGEoKTsKICAgICBp
ZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiAwOwotICAgIGNvbnN0IFZlY3RvcjxNaW1lQ2xhc3NJ
bmZvKj4mIG1pbWVzID0gZGF0YS0+bWltZXMoKTsKKyAgICBjb25zdCBWZWN0b3I8TWltZUNsYXNz
SW5mbz4mIG1pbWVzID0gZGF0YS0+bWltZXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbWltZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1pbWVzW2ldLT50eXBlID09IHBy
b3BlcnR5TmFtZSkKKyAgICAgICAgaWYgKG1pbWVzW2ldLnR5cGUgPT0gcHJvcGVydHlOYW1lKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTc0
LDkgKzc0LDkgQEAgUGFzc1JlZlB0cjxNaW1lVHlwZT4gTWltZVR5cGVBcnJheTo6bmFtZQogICAg
IFBsdWdpbkRhdGEgKmRhdGEgPSBnZXRQbHVnaW5EYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAg
ICAgICByZXR1cm4gMDsKLSAgICBjb25zdCBWZWN0b3I8TWltZUNsYXNzSW5mbyo+JiBtaW1lcyA9
IGRhdGEtPm1pbWVzKCk7CisgICAgY29uc3QgVmVjdG9yPE1pbWVDbGFzc0luZm8+JiBtaW1lcyA9
IGRhdGEtPm1pbWVzKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1pbWVzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIGlmIChtaW1lc1tpXS0+dHlwZSA9PSBwcm9wZXJ0eU5hbWUpCisg
ICAgICAgIGlmIChtaW1lc1tpXS50eXBlID09IHByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIHJl
dHVybiBNaW1lVHlwZTo6Y3JlYXRlKGRhdGEsIGkpLmdldCgpOwogICAgIH0KICAgICByZXR1cm4g
MDsKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9QbHVnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGx1Z2lucy9QbHVnaW4uY3BwCShyZXZpc2lvbiA2MDE4OCkKKysrIFdlYkNvcmUvcGx1Z2lu
cy9QbHVnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw1MyArMzcsNTMgQEAgUGx1Z2luOjp+
UGx1Z2luKCkKIAogU3RyaW5nIFBsdWdpbjo6bmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
cGx1Z2luRGF0YS0+cGx1Z2lucygpW21faW5kZXhdLT5uYW1lOworICAgIHJldHVybiBwbHVnaW5J
bmZvKCkubmFtZTsKIH0KIAogU3RyaW5nIFBsdWdpbjo6ZmlsZW5hbWUoKSBjb25zdAogewotICAg
IHJldHVybiBtX3BsdWdpbkRhdGEtPnBsdWdpbnMoKVttX2luZGV4XS0+ZmlsZTsKKyAgICByZXR1
cm4gcGx1Z2luSW5mbygpLmZpbGU7CiB9CiAKIFN0cmluZyBQbHVnaW46OmRlc2NyaXB0aW9uKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9wbHVnaW5EYXRhLT5wbHVnaW5zKClbbV9pbmRleF0tPmRl
c2M7CisgICAgcmV0dXJuIHBsdWdpbkluZm8oKS5kZXNjOwogfQogCiB1bnNpZ25lZCBQbHVnaW46
Omxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGx1Z2luRGF0YS0+cGx1Z2lucygpW21f
aW5kZXhdLT5taW1lcy5zaXplKCk7CisgICAgcmV0dXJuIHBsdWdpbkluZm8oKS5taW1lcy5zaXpl
KCk7CiB9CiAKIFBhc3NSZWZQdHI8TWltZVR5cGU+IFBsdWdpbjo6aXRlbSh1bnNpZ25lZCBpbmRl
eCkKIHsKLSAgICBjb25zdCBWZWN0b3I8UGx1Z2luSW5mbyo+JiBwbHVnaW5zID0gbV9wbHVnaW5E
YXRhLT5wbHVnaW5zKCk7Ci0gICAgaWYgKGluZGV4ID49IHBsdWdpbnNbbV9pbmRleF0tPm1pbWVz
LnNpemUoKSkKKyAgICBpZiAoaW5kZXggPj0gcGx1Z2luSW5mbygpLm1pbWVzLnNpemUoKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBNaW1lQ2xhc3NJbmZvKiBtaW1lID0gcGx1Z2luc1ttX2lu
ZGV4XS0+bWltZXNbaW5kZXhdOworICAgIGNvbnN0IE1pbWVDbGFzc0luZm8mIG1pbWUgPSBwbHVn
aW5JbmZvKCkubWltZXNbaW5kZXhdOwogCi0gICAgY29uc3QgVmVjdG9yPE1pbWVDbGFzc0luZm8q
PiYgbWltZXMgPSBtX3BsdWdpbkRhdGEtPm1pbWVzKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1pbWVzLnNpemUoKTsgKytpKQorICAgIGNvbnN0IFZlY3RvcjxNaW1lQ2xhc3NJbmZv
PiYgbWltZXMgPSBtX3BsdWdpbkRhdGEtPm1pbWVzKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1pbWVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChtaW1lc1tpXSA9PSBtaW1l
KQogICAgICAgICAgICAgcmV0dXJuIE1pbWVUeXBlOjpjcmVhdGUobV9wbHVnaW5EYXRhLmdldCgp
LCBpKS5nZXQoKTsKKyAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKIGJvb2wgUGx1Z2luOjpjYW5H
ZXRJdGVtc0Zvck5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAg
Y29uc3QgVmVjdG9yPE1pbWVDbGFzc0luZm8qPiYgbWltZXMgPSBtX3BsdWdpbkRhdGEtPm1pbWVz
KCk7CisgICAgY29uc3QgVmVjdG9yPE1pbWVDbGFzc0luZm8+JiBtaW1lcyA9IG1fcGx1Z2luRGF0
YS0+bWltZXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWltZXMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIGlmIChtaW1lc1tpXS0+dHlwZSA9PSBwcm9wZXJ0eU5hbWUpCisgICAgICAg
IGlmIChtaW1lc1tpXS50eXBlID09IHByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogUGFzc1JlZlB0cjxNaW1lVHlwZT4gUGx1Z2lu
OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgY29u
c3QgVmVjdG9yPE1pbWVDbGFzc0luZm8qPiYgbWltZXMgPSBtX3BsdWdpbkRhdGEtPm1pbWVzKCk7
CisgICAgY29uc3QgVmVjdG9yPE1pbWVDbGFzc0luZm8+JiBtaW1lcyA9IG1fcGx1Z2luRGF0YS0+
bWltZXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWltZXMuc2l6ZSgpOyArK2kp
Ci0gICAgICAgIGlmIChtaW1lc1tpXS0+dHlwZSA9PSBwcm9wZXJ0eU5hbWUpCisgICAgICAgIGlm
IChtaW1lc1tpXS50eXBlID09IHByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIHJldHVybiBNaW1l
VHlwZTo6Y3JlYXRlKG1fcGx1Z2luRGF0YS5nZXQoKSwgaSkuZ2V0KCk7CiAgICAgcmV0dXJuIDA7
CiB9CkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpbi5oCShyZXZpc2lvbiA2MDE4OCkKKysrIFdlYkNvcmUvcGx1Z2lucy9Q
bHVnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIFBhc3NSZWZQdHI8TWltZVR5cGU+IG5hbWVkSXRlbShjb25zdCBBdG9taWNT
dHJpbmcmIHByb3BlcnR5TmFtZSk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBjb25zdCBQbHVn
aW5JbmZvJiBwbHVnaW5JbmZvKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5EYXRhLT5wbHVnaW5z
KClbbV9pbmRleF07IH0KKwogICAgICAgICBQbHVnaW4oUGx1Z2luRGF0YSosIHVuc2lnbmVkIGlu
ZGV4KTsKICAgICAgICAgUmVmUHRyPFBsdWdpbkRhdGE+IG1fcGx1Z2luRGF0YTsKICAgICAgICAg
dW5zaWduZWQgbV9pbmRleDsKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5BcnJheS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkFycmF5LmNwcAkocmV2aXNpb24g
NjAxODgpCisrKyBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw3ICszOSw3IEBAIFBsdWdpbkFycmF5Ojp+UGx1Z2luQXJyYXkoKQogCiB1bnNpZ25l
ZCBQbHVnaW5BcnJheTo6bGVuZ3RoKCkgY29uc3QKIHsKLSAgICBQbHVnaW5EYXRhKiBkYXRhID0g
Z2V0UGx1Z2luRGF0YSgpOworICAgIFBsdWdpbkRhdGEqIGRhdGEgPSBwbHVnaW5EYXRhKCk7CiAg
ICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gZGF0YS0+cGx1Z2lu
cygpLnNpemUoKTsKQEAgLTQ3LDEwICs0NywxMCBAQCB1bnNpZ25lZCBQbHVnaW5BcnJheTo6bGVu
Z3RoKCkgY29uc3QKIAogUGFzc1JlZlB0cjxQbHVnaW4+IFBsdWdpbkFycmF5OjppdGVtKHVuc2ln
bmVkIGluZGV4KQogewotICAgIFBsdWdpbkRhdGEqIGRhdGEgPSBnZXRQbHVnaW5EYXRhKCk7Cisg
ICAgUGx1Z2luRGF0YSogZGF0YSA9IHBsdWdpbkRhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAg
ICAgIHJldHVybiAwOwotICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZvKj4mIHBsdWdpbnMgPSBk
YXRhLT5wbHVnaW5zKCk7CisgICAgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8+JiBwbHVnaW5zID0g
ZGF0YS0+cGx1Z2lucygpOwogICAgIGlmIChpbmRleCA+PSBwbHVnaW5zLnNpemUoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIFBsdWdpbjo6Y3JlYXRlKGRhdGEsIGluZGV4KS5nZXQo
KTsKQEAgLTU4LDEyICs1OCwxMiBAQCBQYXNzUmVmUHRyPFBsdWdpbj4gUGx1Z2luQXJyYXk6Oml0
ZW0odW5zCiAKIGJvb2wgUGx1Z2luQXJyYXk6OmNhbkdldEl0ZW1zRm9yTmFtZShjb25zdCBBdG9t
aWNTdHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKLSAgICBQbHVnaW5EYXRhKiBkYXRhID0gZ2V0UGx1
Z2luRGF0YSgpOworICAgIFBsdWdpbkRhdGEqIGRhdGEgPSBwbHVnaW5EYXRhKCk7CiAgICAgaWYg
KCFkYXRhKQogICAgICAgICByZXR1cm4gMDsKLSAgICBjb25zdCBWZWN0b3I8UGx1Z2luSW5mbyo+
JiBwbHVnaW5zID0gZGF0YS0+cGx1Z2lucygpOworICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZv
PiYgcGx1Z2lucyA9IGRhdGEtPnBsdWdpbnMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcGx1Z2lucy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAocGx1Z2luc1tpXS0+bmFtZSA9
PSBwcm9wZXJ0eU5hbWUpCisgICAgICAgIGlmIChwbHVnaW5zW2ldLm5hbWUgPT0gcHJvcGVydHlO
YW1lKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsK
QEAgLTcxLDEyICs3MSwxMiBAQCBib29sIFBsdWdpbkFycmF5OjpjYW5HZXRJdGVtc0Zvck5hbWUo
Y29uCiAKIFBhc3NSZWZQdHI8UGx1Z2luPiBQbHVnaW5BcnJheTo6bmFtZWRJdGVtKGNvbnN0IEF0
b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKQogewotICAgIFBsdWdpbkRhdGEqIGRhdGEgPSBnZXRQ
bHVnaW5EYXRhKCk7CisgICAgUGx1Z2luRGF0YSogZGF0YSA9IHBsdWdpbkRhdGEoKTsKICAgICBp
ZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiAwOwotICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZv
Kj4mIHBsdWdpbnMgPSBkYXRhLT5wbHVnaW5zKCk7CisgICAgY29uc3QgVmVjdG9yPFBsdWdpbklu
Zm8+JiBwbHVnaW5zID0gZGF0YS0+cGx1Z2lucygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBwbHVnaW5zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChwbHVnaW5zW2ldLT5uYW1l
ID09IHByb3BlcnR5TmFtZSkKKyAgICAgICAgaWYgKHBsdWdpbnNbaV0ubmFtZSA9PSBwcm9wZXJ0
eU5hbWUpCiAgICAgICAgICAgICByZXR1cm4gUGx1Z2luOjpjcmVhdGUoZGF0YSwgaSkuZ2V0KCk7
CiAgICAgfQogICAgIHJldHVybiAwOwpAQCAtODcsMTQgKzg3LDE0IEBAIHZvaWQgUGx1Z2luQXJy
YXk6OnJlZnJlc2goYm9vbCByZWxvYWQpCiAgICAgUGFnZTo6cmVmcmVzaFBsdWdpbnMocmVsb2Fk
KTsKIH0KIAotUGx1Z2luRGF0YSogUGx1Z2luQXJyYXk6OmdldFBsdWdpbkRhdGEoKSBjb25zdAor
UGx1Z2luRGF0YSogUGx1Z2luQXJyYXk6OnBsdWdpbkRhdGEoKSBjb25zdAogewogICAgIGlmICgh
bV9mcmFtZSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgUGFnZSogcCA9IG1fZnJhbWUtPnBhZ2Uo
KTsKLSAgICBpZiAoIXApCisgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBp
ZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBwLT5wbHVnaW5EYXRhKCk7
CisgICAgcmV0dXJuIHBhZ2UtPnBsdWdpbkRhdGEoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkFycmF5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbHVnaW5zL1BsdWdpbkFycmF5LmgJKHJldmlzaW9uIDYwMTg4KQorKysgV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpbkFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUGx1Z2luQXJyYXko
RnJhbWUqKTsKLSAgICAgICAgUGx1Z2luRGF0YSogZ2V0UGx1Z2luRGF0YSgpIGNvbnN0OworICAg
ICAgICBQbHVnaW5EYXRhKiBwbHVnaW5EYXRhKCkgY29uc3Q7CiAKICAgICAgICAgRnJhbWUqIG1f
ZnJhbWU7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5jcHAJKHJldmlzaW9uIDYwMTg4
KQorKysgV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MiwzMSArMzIsMzMgQEAgUGx1Z2luRGF0YTo6UGx1Z2luRGF0YShjb25zdCBQYWdlKiBwYWdlKQog
ICAgIGluaXRQbHVnaW5zKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wbHVn
aW5zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFBsdWdpbkluZm8qIHBsdWdpbiA9IG1f
cGx1Z2luc1tpXTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHBsdWdpbi0+bWlt
ZXMuc2l6ZSgpOyArK2opCi0gICAgICAgICAgICBtX21pbWVzLmFwcGVuZChwbHVnaW4tPm1pbWVz
W2pdKTsKKyAgICAgICAgY29uc3QgUGx1Z2luSW5mbyYgcGx1Z2luID0gbV9wbHVnaW5zW2ldOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgcGx1Z2luLm1pbWVzLnNpemUoKTsgKytq
KQorICAgICAgICAgICAgbV9taW1lcy5hcHBlbmQocGx1Z2luLm1pbWVzW2pdKTsKICAgICB9CiB9
CiAKIFBsdWdpbkRhdGE6On5QbHVnaW5EYXRhKCkKIHsKLSAgICBkZWxldGVBbGxWYWx1ZXMobV9w
bHVnaW5zKTsKLSAgICBkZWxldGVBbGxWYWx1ZXMobV9taW1lcyk7CiB9CiAKIGJvb2wgUGx1Z2lu
RGF0YTo6c3VwcG9ydHNNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAogewog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbWVzLnNpemUoKTsgKytpKQotICAgICAg
ICBpZiAobV9taW1lc1tpXS0+dHlwZSA9PSBtaW1lVHlwZSkKKyAgICAgICAgaWYgKG1fbWltZXNb
aV0udHlwZSA9PSBtaW1lVHlwZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAogU3RyaW5nIFBsdWdpbkRhdGE6OnBsdWdpbk5hbWVGb3JNaW1lVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAogewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX21pbWVzLnNpemUoKTsgKytpKQotICAgICAgICBpZiAobV9taW1lc1tpXS0+dHlwZSA9
PSBtaW1lVHlwZSkKLSAgICAgICAgICAgIHJldHVybiBtX21pbWVzW2ldLT5wbHVnaW4tPm5hbWU7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWltZXMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgY29uc3QgTWltZUNsYXNzSW5mbyYgaW5mbyA9IG1fbWltZXNbaV07CisgICAgCisgICAg
ICAgIGlmIChpbmZvLnR5cGUgPT0gbWltZVR5cGUpCisgICAgICAgICAgICByZXR1cm4gbV9wbHVn
aW5zW2luZm8ucGx1Z2luSW5kZXhdLm5hbWU7CisgICAgfQorCiAgICAgcmV0dXJuIFN0cmluZygp
OwogfQogCkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgJKHJldmlzaW9uIDYwMTg4KQorKysgV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNDggKzI2LDUzIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFBhZ2U7Ci0gICAgc3RydWN0IFBs
dWdpbkluZm87CitjbGFzcyBQYWdlOworc3RydWN0IFBsdWdpbkluZm87CiAKLSAgICBzdHJ1Y3Qg
TWltZUNsYXNzSW5mbyA6IE5vbmNvcHlhYmxlIHsKLSAgICAgICAgU3RyaW5nIHR5cGU7Ci0gICAg
ICAgIFN0cmluZyBkZXNjOwotICAgICAgICBTdHJpbmcgc3VmZml4ZXM7Ci0gICAgICAgIFBsdWdp
bkluZm8qIHBsdWdpbjsKLSAgICB9OwotCi0gICAgc3RydWN0IFBsdWdpbkluZm8gOiBOb25jb3B5
YWJsZSB7Ci0gICAgICAgIFN0cmluZyBuYW1lOwotICAgICAgICBTdHJpbmcgZmlsZTsKLSAgICAg
ICAgU3RyaW5nIGRlc2M7Ci0gICAgICAgIFZlY3RvcjxNaW1lQ2xhc3NJbmZvKj4gbWltZXM7Ci0g
ICAgfTsKLQotICAgIC8vIEZJWE1FOiBtZXJnZSB3aXRoIFBsdWdpbkRhdGFiYXNlIGluIHRoZSBm
dXR1cmUKLSAgICBjbGFzcyBQbHVnaW5EYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8UGx1Z2luRGF0
YT4gewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luRGF0YT4g
Y3JlYXRlKGNvbnN0IFBhZ2UqIHBhZ2UpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVnaW5EYXRh
KHBhZ2UpKTsgfQotICAgICAgICB+UGx1Z2luRGF0YSgpOwotCi0gICAgICAgIHZvaWQgZGlzY29u
bmVjdFBhZ2UoKSB7IG1fcGFnZSA9IDA7IH0KLSAgICAgICAgY29uc3QgUGFnZSogcGFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFnZTsgfQotCi0gICAgICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZv
Kj4mIHBsdWdpbnMoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbnM7IH0KLSAgICAgICAgY29uc3Qg
VmVjdG9yPE1pbWVDbGFzc0luZm8qPiYgbWltZXMoKSBjb25zdCB7IHJldHVybiBtX21pbWVzOyB9
Ci0KLSAgICAgICAgYm9vbCBzdXBwb3J0c01pbWVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
IGNvbnN0OwotICAgICAgICBTdHJpbmcgcGx1Z2luTmFtZUZvck1pbWVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpIGNvbnN0OwotCi0gICAgICAgIHN0YXRpYyB2b2lkIHJlZnJlc2goKTsKLQot
ICAgIHByaXZhdGU6Ci0gICAgICAgIFBsdWdpbkRhdGEoY29uc3QgUGFnZSopOwotICAgICAgICB2
b2lkIGluaXRQbHVnaW5zKCk7Ci0KLSAgICAgICAgVmVjdG9yPFBsdWdpbkluZm8qPiBtX3BsdWdp
bnM7Ci0gICAgICAgIFZlY3RvcjxNaW1lQ2xhc3NJbmZvKj4gbV9taW1lczsKLSAgICAgICAgY29u
c3QgUGFnZSogbV9wYWdlOwotICAgIH07CitzdHJ1Y3QgTWltZUNsYXNzSW5mbyB7CisgICAgU3Ry
aW5nIHR5cGU7CisgICAgU3RyaW5nIGRlc2M7CisgICAgU3RyaW5nIHN1ZmZpeGVzOworICAgIHVu
c2lnbmVkIHBsdWdpbkluZGV4OworfTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBN
aW1lQ2xhc3NJbmZvJiBhLCBjb25zdCBNaW1lQ2xhc3NJbmZvJiBiKQoreworICAgIHJldHVybiBh
LnR5cGUgPT0gYi50eXBlICYmIGEuZGVzYyA9PSBiLmRlc2MgJiYgYS5zdWZmaXhlcyA9PSBiLnN1
ZmZpeGVzICYmIGEucGx1Z2luSW5kZXggPT0gYi5wbHVnaW5JbmRleDsKK30KKworc3RydWN0IFBs
dWdpbkluZm8geworICAgIFN0cmluZyBuYW1lOworICAgIFN0cmluZyBmaWxlOworICAgIFN0cmlu
ZyBkZXNjOworICAgIFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiBtaW1lczsKK307CisKKy8vIEZJWE1F
OiBtZXJnZSB3aXRoIFBsdWdpbkRhdGFiYXNlIGluIHRoZSBmdXR1cmUKK2NsYXNzIFBsdWdpbkRh
dGEgOiBwdWJsaWMgUmVmQ291bnRlZDxQbHVnaW5EYXRhPiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8UGx1Z2luRGF0YT4gY3JlYXRlKGNvbnN0IFBhZ2UqIHBhZ2UpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBQbHVnaW5EYXRhKHBhZ2UpKTsgfQorICAgIH5QbHVnaW5EYXRhKCk7CisK
KyAgICB2b2lkIGRpc2Nvbm5lY3RQYWdlKCkgeyBtX3BhZ2UgPSAwOyB9CisgICAgY29uc3QgUGFn
ZSogcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQorCisgICAgY29uc3QgVmVjdG9yPFBs
dWdpbkluZm8+JiBwbHVnaW5zKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5zOyB9CisgICAgY29u
c3QgVmVjdG9yPE1pbWVDbGFzc0luZm8+JiBtaW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fbWltZXM7
IH0KKworICAgIGJvb2wgc3VwcG9ydHNNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBj
b25zdDsKKyAgICBTdHJpbmcgcGx1Z2luTmFtZUZvck1pbWVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpIGNvbnN0OworCisgICAgc3RhdGljIHZvaWQgcmVmcmVzaCgpOworCitwcml2YXRlOgor
ICAgIFBsdWdpbkRhdGEoY29uc3QgUGFnZSopOworICAgIHZvaWQgaW5pdFBsdWdpbnMoKTsKKwor
ICAgIFZlY3RvcjxQbHVnaW5JbmZvPiBtX3BsdWdpbnM7CisgICAgVmVjdG9yPE1pbWVDbGFzc0lu
Zm8+IG1fbWltZXM7CisgICAgY29uc3QgUGFnZSogbV9wYWdlOworfTsKIAogfQogCkluZGV4OiBX
ZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vUGx1Z2luRGF0YUNocm9taXVtLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vUGx1Z2luRGF0YUNocm9taXVtLmNwcAkocmV2
aXNpb24gNjAxODgpCisrKyBXZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vUGx1Z2luRGF0YUNocm9t
aXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMjMgKzM1LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1zdGF0aWMgUGx1Z2luSW5mbyogY2xvbmUoY29uc3QgUGx1Z2luSW5mbyogaW5m
bykKLXsKLSAgICBQbHVnaW5JbmZvKiByZXN1bHQgPSBuZXcgUGx1Z2luSW5mbygpOwotICAgIHJl
c3VsdC0+bmFtZSA9IGluZm8tPm5hbWU7Ci0gICAgcmVzdWx0LT5kZXNjID0gaW5mby0+ZGVzYzsK
LSAgICByZXN1bHQtPmZpbGUgPSBpbmZvLT5maWxlOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgaW5mby0+bWltZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgTWltZUNsYXNzSW5mbyogbWlt
ZSA9IG5ldyBNaW1lQ2xhc3NJbmZvKCk7Ci0gICAgICAgIG1pbWUtPnR5cGUgPSBpbmZvLT5taW1l
c1tpXS0+dHlwZTsKLSAgICAgICAgbWltZS0+ZGVzYyA9IGluZm8tPm1pbWVzW2ldLT5kZXNjOwot
ICAgICAgICBtaW1lLT5zdWZmaXhlcyA9IGluZm8tPm1pbWVzW2ldLT5zdWZmaXhlczsKLSAgICAg
ICAgbWltZS0+cGx1Z2luID0gcmVzdWx0OwotICAgICAgICByZXN1bHQtPm1pbWVzLmFwcGVuZCht
aW1lKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogY2xhc3MgUGx1Z2luQ2FjaGUg
ewogcHVibGljOgogICAgIFBsdWdpbkNhY2hlKCkgOiBtX2xvYWRlZChmYWxzZSksIG1fcmVmcmVz
aChmYWxzZSkge30KQEAgLTU5LDE1ICs0MiwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc2V0
KGJvb2wgcmVmcmVzaCkKICAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9w
bHVnaW5zLnNpemUoKTsgKytpKQotICAgICAgICAgICAgZGVsZXRlQWxsVmFsdWVzKG1fcGx1Z2lu
c1tpXS0+bWltZXMpOwotICAgICAgICBkZWxldGVBbGxWYWx1ZXMobV9wbHVnaW5zKTsKICAgICAg
ICAgbV9wbHVnaW5zLmNsZWFyKCk7CiAgICAgICAgIG1fbG9hZGVkID0gZmFsc2U7CiAgICAgICAg
IG1fcmVmcmVzaCA9IHJlZnJlc2g7CiAgICAgfQogCi0gICAgY29uc3QgVmVjdG9yPFBsdWdpbklu
Zm8qPiYgcGx1Z2lucygpCisgICAgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8+JiBwbHVnaW5zKCkK
ICAgICB7CiAgICAgICAgIGlmICghbV9sb2FkZWQpIHsKICAgICAgICAgICAgIENocm9taXVtQnJp
ZGdlOjpwbHVnaW5zKG1fcmVmcmVzaCwgJm1fcGx1Z2lucyk7CkBAIC03OCw3ICs1OCw3IEBAIHB1
YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgVmVjdG9yPFBsdWdpbkluZm8qPiBtX3BsdWdp
bnM7CisgICAgVmVjdG9yPFBsdWdpbkluZm8+IG1fcGx1Z2luczsKICAgICBib29sIG1fbG9hZGVk
OwogICAgIGJvb2wgbV9yZWZyZXNoOwogfTsKQEAgLTg3LDkgKzY3LDkgQEAgc3RhdGljIFBsdWdp
bkNhY2hlIHBsdWdpbkNhY2hlOwogCiB2b2lkIFBsdWdpbkRhdGE6OmluaXRQbHVnaW5zKCkKIHsK
LSAgICBjb25zdCBWZWN0b3I8UGx1Z2luSW5mbyo+JiBwbHVnaW5zID0gcGx1Z2luQ2FjaGUucGx1
Z2lucygpOworICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZvPiYgcGx1Z2lucyA9IHBsdWdpbkNh
Y2hlLnBsdWdpbnMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6ZSgp
OyArK2kpCi0gICAgICAgIG1fcGx1Z2lucy5hcHBlbmQoY2xvbmUocGx1Z2luc1tpXSkpOworICAg
ICAgICBtX3BsdWdpbnMuYXBwZW5kKHBsdWdpbnNbaV0pOwogfQogCiB2b2lkIFBsdWdpbkRhdGE6
OnJlZnJlc2goKQpAQCAtMTAwLDE1ICs4MCwxNSBAQCB2b2lkIFBsdWdpbkRhdGE6OnJlZnJlc2go
KQogCiBTdHJpbmcgZ2V0UGx1Z2luTWltZVR5cGVGcm9tRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
ZXh0ZW5zaW9uKQogewotICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZvKj4mIHBsdWdpbnMgPSBw
bHVnaW5DYWNoZS5wbHVnaW5zKCk7CisgICAgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8+JiBwbHVn
aW5zID0gcGx1Z2luQ2FjaGUucGx1Z2lucygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cGx1Z2lucy5zaXplKCk7ICsraSkgewotICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHBs
dWdpbnNbaV0tPm1pbWVzLnNpemUoKTsgKytqKSB7Ci0gICAgICAgICAgICBNaW1lQ2xhc3NJbmZv
KiBtaW1lID0gcGx1Z2luc1tpXS0+bWltZXNbal07CisgICAgICAgIGZvciAoc2l6ZV90IGogPSAw
OyBqIDwgcGx1Z2luc1tpXS5taW1lcy5zaXplKCk7ICsraikgeworICAgICAgICAgICAgY29uc3Qg
TWltZUNsYXNzSW5mbyYgbWltZSA9IHBsdWdpbnNbaV0ubWltZXNbal07CiAgICAgICAgICAgICBW
ZWN0b3I8U3RyaW5nPiBleHRlbnNpb25zOwotICAgICAgICAgICAgbWltZS0+c3VmZml4ZXMuc3Bs
aXQoIiwiLCBleHRlbnNpb25zKTsKKyAgICAgICAgICAgIG1pbWUuc3VmZml4ZXMuc3BsaXQoIiwi
LCBleHRlbnNpb25zKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgZXh0ZW5z
aW9ucy5zaXplKCk7ICsraykgewogICAgICAgICAgICAgICAgIGlmIChleHRlbnNpb24gPT0gZXh0
ZW5zaW9uc1trXSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1pbWUtPnR5cGU7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBtaW1lLnR5cGU7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpbkRhdGFHdGsuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luRGF0YUd0ay5jcHAJKHJldmlz
aW9uIDYwMTg4KQorKysgV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5EYXRhR3RrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsMzAgKzMzLDMwIEBAIHZvaWQgUGx1Z2luRGF0YTo6aW5pdFBsdWdp
bnMoKQogICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5QYWNrYWdlKj4gJnBsdWdpbnMgPSBkYi0+cGx1
Z2lucygpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwbHVnaW5zLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIFBsdWdpbkluZm8qIGluZm8gPSBuZXcgUGx1Z2luSW5mbzsKKyAg
ICAgICAgUGx1Z2luSW5mbyBpbmZvOwogICAgICAgICBQbHVnaW5QYWNrYWdlKiBwYWNrYWdlID0g
cGx1Z2luc1tpXTsKIAotICAgICAgICBpbmZvLT5uYW1lID0gcGFja2FnZS0+bmFtZSgpOwotICAg
ICAgICBpbmZvLT5maWxlID0gcGFja2FnZS0+ZmlsZU5hbWUoKTsKLSAgICAgICAgaW5mby0+ZGVz
YyA9IHBhY2thZ2UtPmRlc2NyaXB0aW9uKCk7CisgICAgICAgIGluZm8ubmFtZSA9IHBhY2thZ2Ut
Pm5hbWUoKTsKKyAgICAgICAgaW5mby5maWxlID0gcGFja2FnZS0+ZmlsZU5hbWUoKTsKKyAgICAg
ICAgaW5mby5kZXNjID0gcGFja2FnZS0+ZGVzY3JpcHRpb24oKTsKIAogICAgICAgICBjb25zdCBN
SU1FVG9EZXNjcmlwdGlvbnNNYXAmIG1pbWVUb0Rlc2NyaXB0aW9ucyA9IHBhY2thZ2UtPm1pbWVU
b0Rlc2NyaXB0aW9ucygpOwogICAgICAgICBNSU1FVG9EZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5lbmQoKTsKICAgICAgICAgZm9yIChNSU1F
VG9EZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWltZVRvRGVzY3JpcHRpb25z
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgTWltZUNsYXNzSW5mbyog
bWltZSA9IG5ldyBNaW1lQ2xhc3NJbmZvOwotICAgICAgICAgICAgaW5mby0+bWltZXMuYXBwZW5k
KG1pbWUpOworICAgICAgICAgICAgTWltZUNsYXNzSW5mbyBtaW1lOwogCi0gICAgICAgICAgICBt
aW1lLT50eXBlID0gaXQtPmZpcnN0OwotICAgICAgICAgICAgbWltZS0+ZGVzYyA9IGl0LT5zZWNv
bmQ7Ci0gICAgICAgICAgICBtaW1lLT5wbHVnaW4gPSBpbmZvOworICAgICAgICAgICAgbWltZS50
eXBlID0gaXQtPmZpcnN0OworICAgICAgICAgICAgbWltZS5kZXNjID0gaXQtPnNlY29uZDsKKyAg
ICAgICAgICAgIG1pbWUucGx1Z2luSW5kZXggPSBtX3BsdWdpbnMuc2l6ZSgpOworICAgICAgICAg
ICAgaW5mby5taW1lcy5hcHBlbmQobWltZSk7CiAKLSAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+
IGV4dGVuc2lvbnMgPSBwYWNrYWdlLT5taW1lVG9FeHRlbnNpb25zKCkuZ2V0KG1pbWUtPnR5cGUp
OworICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9ucyA9IHBhY2thZ2UtPm1pbWVU
b0V4dGVuc2lvbnMoKS5nZXQobWltZS50eXBlKTsKIAogICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGV4dGVuc2lvbnMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICBp
ZiAoaSA+IDApCi0gICAgICAgICAgICAgICAgICAgIG1pbWUtPnN1ZmZpeGVzICs9ICIsIjsKKyAg
ICAgICAgICAgICAgICAgICAgbWltZS5zdWZmaXhlcyArPSAiLCI7CiAKLSAgICAgICAgICAgICAg
ICBtaW1lLT5zdWZmaXhlcyArPSBleHRlbnNpb25zW2ldOworICAgICAgICAgICAgICAgIG1pbWUu
c3VmZml4ZXMgKz0gZXh0ZW5zaW9uc1tpXTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCklu
ZGV4OiBXZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpbkRhdGFNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbHVnaW5zL21hYy9QbHVnaW5EYXRhTWFjLm1tCShyZXZpc2lvbiA2MDE4OCkKKysr
IFdlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luRGF0YU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzksMjIgKzM5LDI0IEBAIHZvaWQgUGx1Z2luRGF0YTo6aW5pdFBsdWdpbnMoKQogCiAgICAgTlNB
cnJheSogcGx1Z2lucyA9IFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIHBsdWdp
bnNJbmZvXTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IFtwbHVnaW5zIGNvdW50
XTsgKytpKSB7Ci0gICAgICAgIFBsdWdpbkluZm8qIHBsdWdpbkluZm8gPSBuZXcgUGx1Z2luSW5m
bzsKKyAgICAgICAgUGx1Z2luSW5mbyBwbHVnaW5JbmZvOwogCiAgICAgICAgIGlkIDxXZWJDb3Jl
UGx1Z2luSW5mbz4gcGx1Z2luID0gW3BsdWdpbnMgb2JqZWN0QXRJbmRleDppXTsKICAgICAKLSAg
ICAgICAgcGx1Z2luSW5mby0+bmFtZSA9IFtwbHVnaW4gbmFtZV07Ci0gICAgICAgIHBsdWdpbklu
Zm8tPmZpbGUgPSBbcGx1Z2luIGZpbGVuYW1lXTsKLSAgICAgICAgcGx1Z2luSW5mby0+ZGVzYyA9
IFtwbHVnaW4gcGx1Z2luRGVzY3JpcHRpb25dOworICAgICAgICBwbHVnaW5JbmZvLm5hbWUgPSBb
cGx1Z2luIG5hbWVdOworICAgICAgICBwbHVnaW5JbmZvLmZpbGUgPSBbcGx1Z2luIGZpbGVuYW1l
XTsKKyAgICAgICAgcGx1Z2luSW5mby5kZXNjID0gW3BsdWdpbiBwbHVnaW5EZXNjcmlwdGlvbl07
CiAKICAgICAgICAgTlNFbnVtZXJhdG9yKiBNSU1FVHlwZUVudW1lcmF0b3IgPSBbcGx1Z2luIE1J
TUVUeXBlRW51bWVyYXRvcl07CiAgICAgICAgIHdoaWxlIChOU1N0cmluZyogTUlNRSA9IFtNSU1F
VHlwZUVudW1lcmF0b3IgbmV4dE9iamVjdF0pIHsKLSAgICAgICAgICAgIE1pbWVDbGFzc0luZm8q
IG1pbWUgPSBuZXcgTWltZUNsYXNzSW5mbzsKLSAgICAgICAgICAgIHBsdWdpbkluZm8tPm1pbWVz
LmFwcGVuZChtaW1lKTsKLSAgICAgICAgICAgIG1pbWUtPnR5cGUgPSBTdHJpbmcoTUlNRSkubG93
ZXIoKTsKLSAgICAgICAgICAgIG1pbWUtPnN1ZmZpeGVzID0gW1twbHVnaW4gZXh0ZW5zaW9uc0Zv
ck1JTUVUeXBlOk1JTUVdIGNvbXBvbmVudHNKb2luZWRCeVN0cmluZzpAIiwiXTsKLSAgICAgICAg
ICAgIG1pbWUtPmRlc2MgPSBbcGx1Z2luIGRlc2NyaXB0aW9uRm9yTUlNRVR5cGU6TUlNRV07Ci0g
ICAgICAgICAgICBtaW1lLT5wbHVnaW4gPSBwbHVnaW5JbmZvOworICAgICAgICAgICAgTWltZUNs
YXNzSW5mbyBtaW1lOworCisgICAgICAgICAgICBtaW1lLnR5cGUgPSBTdHJpbmcoTUlNRSkubG93
ZXIoKTsKKyAgICAgICAgICAgIG1pbWUuc3VmZml4ZXMgPSBbW3BsdWdpbiBleHRlbnNpb25zRm9y
TUlNRVR5cGU6TUlNRV0gY29tcG9uZW50c0pvaW5lZEJ5U3RyaW5nOkAiLCJdOworICAgICAgICAg
ICAgbWltZS5kZXNjID0gW3BsdWdpbiBkZXNjcmlwdGlvbkZvck1JTUVUeXBlOk1JTUVdOworICAg
ICAgICAgICAgbWltZS5wbHVnaW5JbmRleCA9IG1fcGx1Z2lucy5zaXplKCk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIHBsdWdpbkluZm8ubWltZXMuYXBwZW5kKG1pbWUpOwogICAgICAgICB9
CiAKICAgICAgICAgbV9wbHVnaW5zLmFwcGVuZChwbHVnaW5JbmZvKTsKSW5kZXg6IFdlYkNvcmUv
cGx1Z2lucy9xdC9QbHVnaW5EYXRhUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lu
cy9xdC9QbHVnaW5EYXRhUXQuY3BwCShyZXZpc2lvbiA2MDE4OCkKKysrIFdlYkNvcmUvcGx1Z2lu
cy9xdC9QbHVnaW5EYXRhUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxOSArNDIsMjAgQEAg
dm9pZCBQbHVnaW5EYXRhOjppbml0UGx1Z2lucygpCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgcXBsdWdpbnMuY291bnQoKTsgKytpKSB7CiAgICAgICAgICAgICBjb25zdCBRV2ViUGx1Z2lu
RmFjdG9yeTo6UGx1Z2luJiBxcGx1Z2luID0gcXBsdWdpbnMuYXQoaSk7CiAKLSAgICAgICAgICAg
IFBsdWdpbkluZm8qIGluZm8gPSBuZXcgUGx1Z2luSW5mbzsKLSAgICAgICAgICAgIGluZm8tPm5h
bWUgPSBxcGx1Z2luLm5hbWU7Ci0gICAgICAgICAgICBpbmZvLT5kZXNjID0gcXBsdWdpbi5kZXNj
cmlwdGlvbjsKKyAgICAgICAgICAgIFBsdWdpbkluZm8gaW5mbzsKKyAgICAgICAgICAgIGluZm8u
bmFtZSA9IHFwbHVnaW4ubmFtZTsKKyAgICAgICAgICAgIGluZm8uZGVzYyA9IHFwbHVnaW4uZGVz
Y3JpcHRpb247CiAKICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgcXBsdWdpbi5taW1l
VHlwZXMuY291bnQoKTsgKytqKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgUVdlYlBsdWdpbkZh
Y3Rvcnk6Ok1pbWVUeXBlJiBtaW1lVHlwZSA9IHFwbHVnaW4ubWltZVR5cGVzLmF0KGopOwogCi0g
ICAgICAgICAgICAgICAgTWltZUNsYXNzSW5mbyogbWltZUluZm8gPSBuZXcgTWltZUNsYXNzSW5m
bzsKLSAgICAgICAgICAgICAgICBtaW1lSW5mby0+dHlwZSA9IG1pbWVUeXBlLm5hbWU7Ci0gICAg
ICAgICAgICAgICAgbWltZUluZm8tPmRlc2MgPSBtaW1lVHlwZS5kZXNjcmlwdGlvbjsKLSAgICAg
ICAgICAgICAgICBtaW1lSW5mby0+c3VmZml4ZXMgPSBtaW1lVHlwZS5maWxlRXh0ZW5zaW9ucy5q
b2luKFFMYXRpbjFTdHJpbmcoIjsgIikpOworICAgICAgICAgICAgICAgIE1pbWVDbGFzc0luZm8g
bWltZUluZm87CisgICAgICAgICAgICAgICAgbWltZUluZm8udHlwZSA9IG1pbWVUeXBlLm5hbWU7
CisgICAgICAgICAgICAgICAgbWltZUluZm8uZGVzYyA9IG1pbWVUeXBlLmRlc2NyaXB0aW9uOwor
ICAgICAgICAgICAgICAgIG1pbWVJbmZvLnN1ZmZpeGVzID0gbWltZVR5cGUuZmlsZUV4dGVuc2lv
bnMuam9pbihRTGF0aW4xU3RyaW5nKCI7ICIpKTsKKyAgICAgICAgICAgICAgICBtaW1lSW5mby5w
bHVnaW5JbmRleCA9IG1fcGx1Z2lucy5zaXplKCk7CiAKLSAgICAgICAgICAgICAgICBpbmZvLT5t
aW1lcy5hcHBlbmQobWltZUluZm8pOworICAgICAgICAgICAgICAgIGluZm8ubWltZXMuYXBwZW5k
KG1pbWVJbmZvKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbV9wbHVnaW5zLmFwcGVu
ZChpbmZvKTsKQEAgLTY1LDMwICs2NiwzMCBAQCB2b2lkIFBsdWdpbkRhdGE6OmluaXRQbHVnaW5z
KCkKICAgICBjb25zdCBWZWN0b3I8UGx1Z2luUGFja2FnZSo+ICZwbHVnaW5zID0gZGItPnBsdWdp
bnMoKTsKIAogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGx1Z2lucy5zaXplKCk7
ICsraSkgewotICAgICAgICBQbHVnaW5JbmZvKiBpbmZvID0gbmV3IFBsdWdpbkluZm87CisgICAg
ICAgIFBsdWdpbkluZm8gaW5mbzsKICAgICAgICAgUGx1Z2luUGFja2FnZSogcGFja2FnZSA9IHBs
dWdpbnNbaV07CiAKLSAgICAgICAgaW5mby0+bmFtZSA9IHBhY2thZ2UtPm5hbWUoKTsKLSAgICAg
ICAgaW5mby0+ZmlsZSA9IHBhY2thZ2UtPmZpbGVOYW1lKCk7Ci0gICAgICAgIGluZm8tPmRlc2Mg
PSBwYWNrYWdlLT5kZXNjcmlwdGlvbigpOworICAgICAgICBpbmZvLm5hbWUgPSBwYWNrYWdlLT5u
YW1lKCk7CisgICAgICAgIGluZm8uZmlsZSA9IHBhY2thZ2UtPmZpbGVOYW1lKCk7CisgICAgICAg
IGluZm8uZGVzYyA9IHBhY2thZ2UtPmRlc2NyaXB0aW9uKCk7CiAKICAgICAgICAgY29uc3QgTUlN
RVRvRGVzY3JpcHRpb25zTWFwJiBtaW1lVG9EZXNjcmlwdGlvbnMgPSBwYWNrYWdlLT5taW1lVG9E
ZXNjcmlwdGlvbnMoKTsKICAgICAgICAgTUlNRVRvRGVzY3JpcHRpb25zTWFwOjpjb25zdF9pdGVy
YXRvciBlbmQgPSBtaW1lVG9EZXNjcmlwdGlvbnMuZW5kKCk7CiAgICAgICAgIGZvciAoTUlNRVRv
RGVzY3JpcHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIE1pbWVDbGFzc0luZm8qIG1p
bWUgPSBuZXcgTWltZUNsYXNzSW5mbzsKLSAgICAgICAgICAgIGluZm8tPm1pbWVzLmFwcGVuZCht
aW1lKTsKKyAgICAgICAgICAgIE1pbWVDbGFzc0luZm8gbWltZTsKKyAgICAgICAgICAgIGluZm8u
bWltZXMuYXBwZW5kKG1pbWUpOwogCi0gICAgICAgICAgICBtaW1lLT50eXBlID0gaXQtPmZpcnN0
OwotICAgICAgICAgICAgbWltZS0+ZGVzYyA9IGl0LT5zZWNvbmQ7Ci0gICAgICAgICAgICBtaW1l
LT5wbHVnaW4gPSBpbmZvOworICAgICAgICAgICAgbWltZS50eXBlID0gaXQtPmZpcnN0OworICAg
ICAgICAgICAgbWltZS5kZXNjID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIG1pbWUucGx1Z2lu
SW5kZXggPSBtX3BsdWdpbnMuc2l6ZSgpOwogCi0gICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBl
eHRlbnNpb25zID0gcGFja2FnZS0+bWltZVRvRXh0ZW5zaW9ucygpLmdldChtaW1lLT50eXBlKTsK
KyAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbnMgPSBwYWNrYWdlLT5taW1lVG9F
eHRlbnNpb25zKCkuZ2V0KG1pbWUudHlwZSk7CiAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBleHRlbnNpb25zLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgaWYg
KGkgPiAwKQotICAgICAgICAgICAgICAgICAgICBtaW1lLT5zdWZmaXhlcyArPSAiLCI7CisgICAg
ICAgICAgICAgICAgICAgIG1pbWUuc3VmZml4ZXMgKz0gIiwiOwogCi0gICAgICAgICAgICAgICAg
bWltZS0+c3VmZml4ZXMgKz0gZXh0ZW5zaW9uc1tpXTsKKyAgICAgICAgICAgICAgICBtaW1lLnN1
ZmZpeGVzICs9IGV4dGVuc2lvbnNbaV07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApJbmRl
eDogV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhV2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpbkRhdGFXaW4uY3BwCShyZXZpc2lvbiA2MDE4OCkKKysr
IFdlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luRGF0YVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDMxICszMiwzMyBAQCB2b2lkIFBsdWdpbkRhdGE6OmluaXRQbHVnaW5zKCkKICAgICBjb25z
dCBWZWN0b3I8UGx1Z2luUGFja2FnZSo+ICZwbHVnaW5zID0gZGItPnBsdWdpbnMoKTsKIAogICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGx1Z2lucy5zaXplKCk7ICsraSkgewotICAg
ICAgICBQbHVnaW5JbmZvKiBpbmZvID0gbmV3IFBsdWdpbkluZm87CiAgICAgICAgIFBsdWdpblBh
Y2thZ2UqIHBhY2thZ2UgPSBwbHVnaW5zW2ldOwogCi0gICAgICAgIGluZm8tPm5hbWUgPSBwYWNr
YWdlLT5uYW1lKCk7Ci0gICAgICAgIGluZm8tPmZpbGUgPSBwYWNrYWdlLT5maWxlTmFtZSgpOwot
ICAgICAgICBpbmZvLT5kZXNjID0gcGFja2FnZS0+ZGVzY3JpcHRpb24oKTsKKyAgICAgICAgUGx1
Z2luSW5mbyBpbmZvOworICAgICAgICBpbmZvLm5hbWUgPSBwYWNrYWdlLT5uYW1lKCk7CisgICAg
ICAgIGluZm8uZmlsZSA9IHBhY2thZ2UtPmZpbGVOYW1lKCk7CisgICAgICAgIGluZm8uZGVzYyA9
IHBhY2thZ2UtPmRlc2NyaXB0aW9uKCk7CiAKICAgICAgICAgY29uc3QgTUlNRVRvRGVzY3JpcHRp
b25zTWFwJiBtaW1lVG9EZXNjcmlwdGlvbnMgPSBwYWNrYWdlLT5taW1lVG9EZXNjcmlwdGlvbnMo
KTsKICAgICAgICAgTUlNRVRvRGVzY3JpcHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBt
aW1lVG9EZXNjcmlwdGlvbnMuZW5kKCk7CiAgICAgICAgIGZvciAoTUlNRVRvRGVzY3JpcHRpb25z
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIE1pbWVDbGFzc0luZm8qIG1pbWUgPSBuZXcgTWlt
ZUNsYXNzSW5mbzsKLSAgICAgICAgICAgIGluZm8tPm1pbWVzLmFwcGVuZChtaW1lKTsKKyAgICAg
ICAgICAgIE1pbWVDbGFzc0luZm8gbWltZTsKIAotICAgICAgICAgICAgbWltZS0+dHlwZSA9IGl0
LT5maXJzdDsKLSAgICAgICAgICAgIG1pbWUtPmRlc2MgPSBpdC0+c2Vjb25kOwotICAgICAgICAg
ICAgbWltZS0+cGx1Z2luID0gaW5mbzsKKyAgICAgICAgICAgIG1pbWUudHlwZSA9IGl0LT5maXJz
dDsKKyAgICAgICAgICAgIG1pbWUuZGVzYyA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICBtaW1l
LnBsdWdpbkluZGV4ID0gbV9wbHVnaW5zLnNpemUoKTsKIAotICAgICAgICAgICAgVmVjdG9yPFN0
cmluZz4gZXh0ZW5zaW9ucyA9IHBhY2thZ2UtPm1pbWVUb0V4dGVuc2lvbnMoKS5nZXQobWltZS0+
dHlwZSk7CisgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBleHRlbnNpb25zID0gcGFja2FnZS0+
bWltZVRvRXh0ZW5zaW9ucygpLmdldChtaW1lLnR5cGUpOwogCiAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZXh0ZW5zaW9ucy5zaXplKCk7IGkrKykgewogICAgICAgICAgICAg
ICAgIGlmIChpID4gMCkKLSAgICAgICAgICAgICAgICAgICAgbWltZS0+c3VmZml4ZXMgKz0gIiwi
OworICAgICAgICAgICAgICAgICAgICBtaW1lLnN1ZmZpeGVzICs9ICIsIjsKIAotICAgICAgICAg
ICAgICAgIG1pbWUtPnN1ZmZpeGVzICs9IGV4dGVuc2lvbnNbaV07CisgICAgICAgICAgICAgICAg
bWltZS5zdWZmaXhlcyArPSBleHRlbnNpb25zW2ldOwogICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpbmZvLm1pbWVzLmFwcGVuZChtaW1lKTsKKwogICAgICAgICB9CiAKICAgICAgICAgbV9w
bHVnaW5zLmFwcGVuZChpbmZvKTsKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy93eC9QbHVnaW5EYXRh
V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy93eC9QbHVnaW5EYXRhV3guY3Bw
CShyZXZpc2lvbiA2MDE4OCkKKysrIFdlYkNvcmUvcGx1Z2lucy93eC9QbHVnaW5EYXRhV3guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSwzMSArMzksMzIgQEAgdm9pZCBQbHVnaW5EYXRhOjppbml0
UGx1Z2lucygpCiAgICAgY29uc3QgVmVjdG9yPFBsdWdpblBhY2thZ2UqPiAmcGx1Z2lucyA9IGRi
LT5wbHVnaW5zKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBsdWdpbnMu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgUGx1Z2luSW5mbyogaW5mbyA9IG5ldyBQbHVnaW5JbmZv
OworICAgICAgICBQbHVnaW5JbmZvIGluZm87CiAgICAgICAgIFBsdWdpblBhY2thZ2UqIHBhY2th
Z2UgPSBwbHVnaW5zW2ldOwogCi0gICAgICAgIGluZm8tPm5hbWUgPSBwYWNrYWdlLT5uYW1lKCk7
Ci0gICAgICAgIGluZm8tPmZpbGUgPSBwYWNrYWdlLT5maWxlTmFtZSgpOwotICAgICAgICBpbmZv
LT5kZXNjID0gcGFja2FnZS0+ZGVzY3JpcHRpb24oKTsKKyAgICAgICAgaW5mby5uYW1lID0gcGFj
a2FnZS0+bmFtZSgpOworICAgICAgICBpbmZvLmZpbGUgPSBwYWNrYWdlLT5maWxlTmFtZSgpOwor
ICAgICAgICBpbmZvLmRlc2MgPSBwYWNrYWdlLT5kZXNjcmlwdGlvbigpOwogCiAgICAgICAgIGNv
bnN0IE1JTUVUb0Rlc2NyaXB0aW9uc01hcCYgbWltZVRvRGVzY3JpcHRpb25zID0gcGFja2FnZS0+
bWltZVRvRGVzY3JpcHRpb25zKCk7CiAgICAgICAgIE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gbWltZVRvRGVzY3JpcHRpb25zLmVuZCgpOwogICAgICAgICBmb3Ig
KE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtaW1lVG9EZXNjcmlw
dGlvbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBNaW1lQ2xhc3NJ
bmZvKiBtaW1lID0gbmV3IE1pbWVDbGFzc0luZm87Ci0gICAgICAgICAgICBpbmZvLT5taW1lcy5h
cHBlbmQobWltZSk7CisgICAgICAgICAgICBNaW1lQ2xhc3NJbmZvIG1pbWU7CiAKLSAgICAgICAg
ICAgIG1pbWUtPnR5cGUgPSBpdC0+Zmlyc3Q7Ci0gICAgICAgICAgICBtaW1lLT5kZXNjID0gaXQt
PnNlY29uZDsKLSAgICAgICAgICAgIG1pbWUtPnBsdWdpbiA9IGluZm87CisgICAgICAgICAgICBt
aW1lLnR5cGUgPSBpdC0+Zmlyc3Q7CisgICAgICAgICAgICBtaW1lLmRlc2MgPSBpdC0+c2Vjb25k
OworICAgICAgICAgICAgbWltZS5wbHVnaW5JbmRleCA9IG1fcGx1Z2lucy5zaXplKCk7CiAKLSAg
ICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbnMgPSBwYWNrYWdlLT5taW1lVG9FeHRl
bnNpb25zKCkuZ2V0KG1pbWUtPnR5cGUpOworICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZXh0
ZW5zaW9ucyA9IHBhY2thZ2UtPm1pbWVUb0V4dGVuc2lvbnMoKS5nZXQobWltZS50eXBlKTsKIAog
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4dGVuc2lvbnMuc2l6ZSgpOyBp
KyspIHsKICAgICAgICAgICAgICAgICBpZiAoaSA+IDApCi0gICAgICAgICAgICAgICAgICAgIG1p
bWUtPnN1ZmZpeGVzICs9ICIsIjsKKyAgICAgICAgICAgICAgICAgICAgbWltZS5zdWZmaXhlcyAr
PSAiLCI7CiAKLSAgICAgICAgICAgICAgICBtaW1lLT5zdWZmaXhlcyArPSBleHRlbnNpb25zW2ld
OworICAgICAgICAgICAgICAgIG1pbWUuc3VmZml4ZXMgKz0gZXh0ZW5zaW9uc1tpXTsKICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW5mby5taW1lcy5hcHBlbmQobWlt
ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBtX3BsdWdpbnMuYXBwZW5kKGluZm8pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57110</attachid>
            <date>2010-05-26 10:07:47 -0700</date>
            <delta_ts>2010-05-26 11:32:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39700-20100526100746.patch</filename>
            <type>text/plain</type>
            <size>34383</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDE5OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzMgQEAKKzIwMTAtMDUtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDbGVhbiB1cCBNaW1lQ2xhc3NJbmZvIGFuZCBQbHVnaW5JbmZvCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTcwMAorCisgICAgICAgIFRoaXMgZ2V0
cyByaWQgb2YgYWxsIHRoZSBoZWFwIGFsbG9jYXRpb24gZnJvbSBNaW1lQ2xhc3NJbmZvIGFuZCBQ
bHVnaW5JbmZvLiAKKyAgICAgICAgCisgICAgICAgIEl0IGFsc28gY2hhbmdlcyB0aGUgbV9wbHVn
aW5zIGFuZCBtX21pbWVzIHZlY3RvcnMgaW4gUGx1Z2luRGF0YSB0byBub3QgaG9sZCBoZWFwIGFs
bG9jYXRlZCBNaW1lQ2xhc3NJbmZvCisgICAgICAgIGFuZCBQbHVnaW5DbGFzc0luZm8gb2JqZWN0
cy4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpy
ZWZyZXNoUGx1Z2lucyk6CisgICAgICAgICogcGx1Z2lucy9NaW1lVHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNaW1lVHlwZTo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNaW1lVHlwZTo6
c3VmZml4ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWltZVR5cGU6OmRlc2NyaXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1pbWVUeXBlOjplbmFibGVkUGx1Z2luKToKKyAgICAgICAgKiBwbHVn
aW5zL01pbWVUeXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpNaW1lVHlwZTo6bWltZUNsYXNzSW5m
byk6CisgICAgICAgICogcGx1Z2lucy9NaW1lVHlwZUFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1pbWVUeXBlQXJyYXk6Oml0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6TWltZVR5cGVBcnJh
eTo6Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1pbWVUeXBlQXJyYXk6
Om5hbWVkSXRlbSk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbjo6ZmlsZW5hbWUp
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luOjpkZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW46Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW46Oml0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luOjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6UGx1Z2luOjpuYW1lZEl0ZW0pOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luLmg6
CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW46OnBsdWdpbkluZm8pOgorICAgICAgICAqIHBsdWdp
bnMvUGx1Z2luQXJyYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luQXJyYXk6Omxlbmd0
aCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5BcnJheTo6aXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5BcnJheTo6Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsdWdpbkFycmF5OjpuYW1lZEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luQXJyYXk6
OnBsdWdpbkRhdGEpOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luQXJyYXkuaDoKKyAgICAgICAg
KiBwbHVnaW5zL1BsdWdpbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YTo6
UGx1Z2luRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhOjp+UGx1Z2luRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhOjpzdXBwb3J0c01pbWVUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsdWdpbkRhdGE6OnBsdWdpbk5hbWVGb3JNaW1lVHlwZSk6CisgICAgICAg
ICogcGx1Z2lucy9QbHVnaW5EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToK
KyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5EYXRhOjpkaXNjb25uZWN0UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5E
YXRhOjpwYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGE6OnBsdWdpbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YTo6bWltZXMpOgorICAgICAgICAqIHBsdWdpbnMvY2hy
b21pdW0vUGx1Z2luRGF0YUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkNh
Y2hlOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5DYWNoZTo6cGx1Z2lucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhOjppbml0UGx1Z2lucyk6CisgICAgICAgIChXZWJD
b3JlOjpnZXRQbHVnaW5NaW1lVHlwZUZyb21FeHRlbnNpb24pOgorICAgICAgICAqIHBsdWdpbnMv
Z3RrL1BsdWdpbkRhdGFHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YTo6aW5p
dFBsdWdpbnMpOgorICAgICAgICAqIHBsdWdpbnMvbWFjL1BsdWdpbkRhdGFNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhOjppbml0UGx1Z2lucyk6CisgICAgICAgICogcGx1Z2lu
cy9xdC9QbHVnaW5EYXRhUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YTo6aW5p
dFBsdWdpbnMpOgorICAgICAgICAqIHBsdWdpbnMvd2luL1BsdWdpbkRhdGFXaW4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YTo6aW5pdFBsdWdpbnMpOgorICAgICAgICAqIHBsdWdp
bnMvd3gvUGx1Z2luRGF0YVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGE6Omlu
aXRQbHVnaW5zKToKKwogMjAxMC0wNS0yNSAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShy
ZXZpc2lvbiA2MDE4OCkKKysrIFdlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzc3LDEzICszNzcsMTcgQEAgdm9pZCBQYWdlOjpyZWZyZXNoUGx1Z2lucyhib29sIHJlbG9h
ZCkKIAogICAgIEhhc2hTZXQ8UGFnZSo+OjppdGVyYXRvciBlbmQgPSBhbGxQYWdlcy0+ZW5kKCk7
CiAgICAgZm9yIChIYXNoU2V0PFBhZ2UqPjo6aXRlcmF0b3IgaXQgPSBhbGxQYWdlcy0+YmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICgqaXQpLT5tX3BsdWdpbkRhdGEgPSAwOwor
ICAgICAgICBQYWdlKiBwYWdlID0gKml0OworICAgICAgICAKKyAgICAgICAgLy8gQ2xlYXIgb3V0
IHRoZSBwYWdlJ3MgcGx1Zy1pbiBkYXRhLgorICAgICAgICBwYWdlLT5tX3BsdWdpbkRhdGEgPSAw
OwogCi0gICAgICAgIGlmIChyZWxvYWQpIHsKLSAgICAgICAgICAgIGZvciAoRnJhbWUqIGZyYW1l
ID0gKCppdCktPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2
ZXJzZU5leHQoKSkgewotICAgICAgICAgICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCktPmNvbnRh
aW5zUGx1Z2lucygpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZXNOZWVkaW5nUmVsb2FkLmFw
cGVuZChmcmFtZSk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmICghcmVsb2FkKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICgq
aXQpLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VO
ZXh0KCkpIHsKKyAgICAgICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCktPmNvbnRhaW5zUGx1Z2lu
cygpKQorICAgICAgICAgICAgICAgIGZyYW1lc05lZWRpbmdSZWxvYWQuYXBwZW5kKGZyYW1lKTsK
ICAgICAgICAgfQogICAgIH0KIApJbmRleDogV2ViQ29yZS9wbHVnaW5zL01pbWVUeXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMvTWltZVR5cGUuY3BwCShyZXZpc2lvbiA2MDE4
OCkKKysrIFdlYkNvcmUvcGx1Z2lucy9NaW1lVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDE3ICs0MCwxNyBAQCBNaW1lVHlwZTo6fk1pbWVUeXBlKCkKIAogY29uc3QgU3RyaW5nICZNaW1l
VHlwZTo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGx1Z2luRGF0YS0+bWltZXMoKVtt
X2luZGV4XS0+dHlwZTsKKyAgICByZXR1cm4gbWltZUNsYXNzSW5mbygpLnR5cGU7CiB9CiAKIGNv
bnN0IFN0cmluZyAmTWltZVR5cGU6OnN1ZmZpeGVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9w
bHVnaW5EYXRhLT5taW1lcygpW21faW5kZXhdLT5zdWZmaXhlczsKKyAgICByZXR1cm4gbWltZUNs
YXNzSW5mbygpLnN1ZmZpeGVzOwogfQogCiBjb25zdCBTdHJpbmcgJk1pbWVUeXBlOjpkZXNjcmlw
dGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGx1Z2luRGF0YS0+bWltZXMoKVttX2luZGV4
XS0+ZGVzYzsKKyAgICByZXR1cm4gbWltZUNsYXNzSW5mbygpLmRlc2M7CiB9CiAKIFBhc3NSZWZQ
dHI8UGx1Z2luPiBNaW1lVHlwZTo6ZW5hYmxlZFBsdWdpbigpIGNvbnN0CkBAIC01OSwxMyArNTks
NyBAQCBQYXNzUmVmUHRyPFBsdWdpbj4gTWltZVR5cGU6OmVuYWJsZWRQbHVnCiAgICAgaWYgKCFw
IHx8ICFwLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPmFsbG93UGx1Z2lucyhOb3RBYm91dFRvSW5z
dGFudGlhdGVQbHVnaW4pKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGNvbnN0IFBsdWdpbklu
Zm8gKmluZm8gPSBtX3BsdWdpbkRhdGEtPm1pbWVzKClbbV9pbmRleF0tPnBsdWdpbjsKLSAgICBj
b25zdCBWZWN0b3I8UGx1Z2luSW5mbyo+JiBwbHVnaW5zID0gbV9wbHVnaW5EYXRhLT5wbHVnaW5z
KCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwbHVnaW5zLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGlmIChwbHVnaW5zW2ldID09IGluZm8pCi0gICAgICAgICAgICByZXR1cm4gUGx1Z2lu
OjpjcmVhdGUobV9wbHVnaW5EYXRhLmdldCgpLCBpKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIFBsdWdpbjo6Y3JlYXRlKG1fcGx1Z2luRGF0YS5nZXQoKSwgbWltZUNsYXNzSW5m
bygpLnBsdWdpbkluZGV4KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2Vi
Q29yZS9wbHVnaW5zL01pbWVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL01p
bWVUeXBlLmgJKHJldmlzaW9uIDYwMTg4KQorKysgV2ViQ29yZS9wbHVnaW5zL01pbWVUeXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBQYXNzUmVmUHRyPFBsdWdpbj4gZW5hYmxlZFBsdWdpbigpIGNvbnN0OwogCiAgICAgcHJp
dmF0ZToKKyAgICAgICAgY29uc3QgTWltZUNsYXNzSW5mbyYgbWltZUNsYXNzSW5mbygpIGNvbnN0
IHsgcmV0dXJuIG1fcGx1Z2luRGF0YS0+bWltZXMoKVttX2luZGV4XTsgfQorICAgICAgICAKICAg
ICAgICAgTWltZVR5cGUoUGFzc1JlZlB0cjxQbHVnaW5EYXRhPiwgdW5zaWduZWQgaW5kZXgpOwog
ICAgICAgICBSZWZQdHI8UGx1Z2luRGF0YT4gbV9wbHVnaW5EYXRhOwogICAgICAgICB1bnNpZ25l
ZCBtX2luZGV4OwpJbmRleDogV2ViQ29yZS9wbHVnaW5zL01pbWVUeXBlQXJyYXkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy9NaW1lVHlwZUFycmF5LmNwcAkocmV2aXNpb24gNjAx
ODgpCisrKyBXZWJDb3JlL3BsdWdpbnMvTWltZVR5cGVBcnJheS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUwLDcgKzUwLDcgQEAgUGFzc1JlZlB0cjxNaW1lVHlwZT4gTWltZVR5cGVBcnJheTo6aXRl
bQogICAgIFBsdWdpbkRhdGEqIGRhdGEgPSBnZXRQbHVnaW5EYXRhKCk7CiAgICAgaWYgKCFkYXRh
KQogICAgICAgICByZXR1cm4gMDsKLSAgICBjb25zdCBWZWN0b3I8TWltZUNsYXNzSW5mbyo+JiBt
aW1lcyA9IGRhdGEtPm1pbWVzKCk7CisgICAgY29uc3QgVmVjdG9yPE1pbWVDbGFzc0luZm8+JiBt
aW1lcyA9IGRhdGEtPm1pbWVzKCk7CiAgICAgaWYgKGluZGV4ID49IG1pbWVzLnNpemUoKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIE1pbWVUeXBlOjpjcmVhdGUoZGF0YSwgaW5kZXgp
LmdldCgpOwpAQCAtNjEsOSArNjEsOSBAQCBib29sIE1pbWVUeXBlQXJyYXk6OmNhbkdldEl0ZW1z
Rm9yTmFtZShjCiAgICAgUGx1Z2luRGF0YSAqZGF0YSA9IGdldFBsdWdpbkRhdGEoKTsKICAgICBp
ZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiAwOwotICAgIGNvbnN0IFZlY3RvcjxNaW1lQ2xhc3NJ
bmZvKj4mIG1pbWVzID0gZGF0YS0+bWltZXMoKTsKKyAgICBjb25zdCBWZWN0b3I8TWltZUNsYXNz
SW5mbz4mIG1pbWVzID0gZGF0YS0+bWltZXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbWltZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1pbWVzW2ldLT50eXBlID09IHBy
b3BlcnR5TmFtZSkKKyAgICAgICAgaWYgKG1pbWVzW2ldLnR5cGUgPT0gcHJvcGVydHlOYW1lKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTc0
LDkgKzc0LDkgQEAgUGFzc1JlZlB0cjxNaW1lVHlwZT4gTWltZVR5cGVBcnJheTo6bmFtZQogICAg
IFBsdWdpbkRhdGEgKmRhdGEgPSBnZXRQbHVnaW5EYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAg
ICAgICByZXR1cm4gMDsKLSAgICBjb25zdCBWZWN0b3I8TWltZUNsYXNzSW5mbyo+JiBtaW1lcyA9
IGRhdGEtPm1pbWVzKCk7CisgICAgY29uc3QgVmVjdG9yPE1pbWVDbGFzc0luZm8+JiBtaW1lcyA9
IGRhdGEtPm1pbWVzKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1pbWVzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIGlmIChtaW1lc1tpXS0+dHlwZSA9PSBwcm9wZXJ0eU5hbWUpCisg
ICAgICAgIGlmIChtaW1lc1tpXS50eXBlID09IHByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIHJl
dHVybiBNaW1lVHlwZTo6Y3JlYXRlKGRhdGEsIGkpLmdldCgpOwogICAgIH0KICAgICByZXR1cm4g
MDsKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9QbHVnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGx1Z2lucy9QbHVnaW4uY3BwCShyZXZpc2lvbiA2MDE4OCkKKysrIFdlYkNvcmUvcGx1Z2lu
cy9QbHVnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw1MyArMzcsNTMgQEAgUGx1Z2luOjp+
UGx1Z2luKCkKIAogU3RyaW5nIFBsdWdpbjo6bmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
cGx1Z2luRGF0YS0+cGx1Z2lucygpW21faW5kZXhdLT5uYW1lOworICAgIHJldHVybiBwbHVnaW5J
bmZvKCkubmFtZTsKIH0KIAogU3RyaW5nIFBsdWdpbjo6ZmlsZW5hbWUoKSBjb25zdAogewotICAg
IHJldHVybiBtX3BsdWdpbkRhdGEtPnBsdWdpbnMoKVttX2luZGV4XS0+ZmlsZTsKKyAgICByZXR1
cm4gcGx1Z2luSW5mbygpLmZpbGU7CiB9CiAKIFN0cmluZyBQbHVnaW46OmRlc2NyaXB0aW9uKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9wbHVnaW5EYXRhLT5wbHVnaW5zKClbbV9pbmRleF0tPmRl
c2M7CisgICAgcmV0dXJuIHBsdWdpbkluZm8oKS5kZXNjOwogfQogCiB1bnNpZ25lZCBQbHVnaW46
Omxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGx1Z2luRGF0YS0+cGx1Z2lucygpW21f
aW5kZXhdLT5taW1lcy5zaXplKCk7CisgICAgcmV0dXJuIHBsdWdpbkluZm8oKS5taW1lcy5zaXpl
KCk7CiB9CiAKIFBhc3NSZWZQdHI8TWltZVR5cGU+IFBsdWdpbjo6aXRlbSh1bnNpZ25lZCBpbmRl
eCkKIHsKLSAgICBjb25zdCBWZWN0b3I8UGx1Z2luSW5mbyo+JiBwbHVnaW5zID0gbV9wbHVnaW5E
YXRhLT5wbHVnaW5zKCk7Ci0gICAgaWYgKGluZGV4ID49IHBsdWdpbnNbbV9pbmRleF0tPm1pbWVz
LnNpemUoKSkKKyAgICBpZiAoaW5kZXggPj0gcGx1Z2luSW5mbygpLm1pbWVzLnNpemUoKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBNaW1lQ2xhc3NJbmZvKiBtaW1lID0gcGx1Z2luc1ttX2lu
ZGV4XS0+bWltZXNbaW5kZXhdOworICAgIGNvbnN0IE1pbWVDbGFzc0luZm8mIG1pbWUgPSBwbHVn
aW5JbmZvKCkubWltZXNbaW5kZXhdOwogCi0gICAgY29uc3QgVmVjdG9yPE1pbWVDbGFzc0luZm8q
PiYgbWltZXMgPSBtX3BsdWdpbkRhdGEtPm1pbWVzKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1pbWVzLnNpemUoKTsgKytpKQorICAgIGNvbnN0IFZlY3RvcjxNaW1lQ2xhc3NJbmZv
PiYgbWltZXMgPSBtX3BsdWdpbkRhdGEtPm1pbWVzKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1pbWVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChtaW1lc1tpXSA9PSBtaW1l
KQogICAgICAgICAgICAgcmV0dXJuIE1pbWVUeXBlOjpjcmVhdGUobV9wbHVnaW5EYXRhLmdldCgp
LCBpKS5nZXQoKTsKKyAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKIGJvb2wgUGx1Z2luOjpjYW5H
ZXRJdGVtc0Zvck5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAg
Y29uc3QgVmVjdG9yPE1pbWVDbGFzc0luZm8qPiYgbWltZXMgPSBtX3BsdWdpbkRhdGEtPm1pbWVz
KCk7CisgICAgY29uc3QgVmVjdG9yPE1pbWVDbGFzc0luZm8+JiBtaW1lcyA9IG1fcGx1Z2luRGF0
YS0+bWltZXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWltZXMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIGlmIChtaW1lc1tpXS0+dHlwZSA9PSBwcm9wZXJ0eU5hbWUpCisgICAgICAg
IGlmIChtaW1lc1tpXS50eXBlID09IHByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogUGFzc1JlZlB0cjxNaW1lVHlwZT4gUGx1Z2lu
OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgY29u
c3QgVmVjdG9yPE1pbWVDbGFzc0luZm8qPiYgbWltZXMgPSBtX3BsdWdpbkRhdGEtPm1pbWVzKCk7
CisgICAgY29uc3QgVmVjdG9yPE1pbWVDbGFzc0luZm8+JiBtaW1lcyA9IG1fcGx1Z2luRGF0YS0+
bWltZXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWltZXMuc2l6ZSgpOyArK2kp
Ci0gICAgICAgIGlmIChtaW1lc1tpXS0+dHlwZSA9PSBwcm9wZXJ0eU5hbWUpCisgICAgICAgIGlm
IChtaW1lc1tpXS50eXBlID09IHByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIHJldHVybiBNaW1l
VHlwZTo6Y3JlYXRlKG1fcGx1Z2luRGF0YS5nZXQoKSwgaSkuZ2V0KCk7CiAgICAgcmV0dXJuIDA7
CiB9CkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpbi5oCShyZXZpc2lvbiA2MDE4OCkKKysrIFdlYkNvcmUvcGx1Z2lucy9Q
bHVnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIFBhc3NSZWZQdHI8TWltZVR5cGU+IG5hbWVkSXRlbShjb25zdCBBdG9taWNT
dHJpbmcmIHByb3BlcnR5TmFtZSk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBjb25zdCBQbHVn
aW5JbmZvJiBwbHVnaW5JbmZvKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5EYXRhLT5wbHVnaW5z
KClbbV9pbmRleF07IH0KKwogICAgICAgICBQbHVnaW4oUGx1Z2luRGF0YSosIHVuc2lnbmVkIGlu
ZGV4KTsKICAgICAgICAgUmVmUHRyPFBsdWdpbkRhdGE+IG1fcGx1Z2luRGF0YTsKICAgICAgICAg
dW5zaWduZWQgbV9pbmRleDsKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5BcnJheS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkFycmF5LmNwcAkocmV2aXNpb24g
NjAxODgpCisrKyBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw3ICszOSw3IEBAIFBsdWdpbkFycmF5Ojp+UGx1Z2luQXJyYXkoKQogCiB1bnNpZ25l
ZCBQbHVnaW5BcnJheTo6bGVuZ3RoKCkgY29uc3QKIHsKLSAgICBQbHVnaW5EYXRhKiBkYXRhID0g
Z2V0UGx1Z2luRGF0YSgpOworICAgIFBsdWdpbkRhdGEqIGRhdGEgPSBwbHVnaW5EYXRhKCk7CiAg
ICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gZGF0YS0+cGx1Z2lu
cygpLnNpemUoKTsKQEAgLTQ3LDEwICs0NywxMCBAQCB1bnNpZ25lZCBQbHVnaW5BcnJheTo6bGVu
Z3RoKCkgY29uc3QKIAogUGFzc1JlZlB0cjxQbHVnaW4+IFBsdWdpbkFycmF5OjppdGVtKHVuc2ln
bmVkIGluZGV4KQogewotICAgIFBsdWdpbkRhdGEqIGRhdGEgPSBnZXRQbHVnaW5EYXRhKCk7Cisg
ICAgUGx1Z2luRGF0YSogZGF0YSA9IHBsdWdpbkRhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAg
ICAgIHJldHVybiAwOwotICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZvKj4mIHBsdWdpbnMgPSBk
YXRhLT5wbHVnaW5zKCk7CisgICAgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8+JiBwbHVnaW5zID0g
ZGF0YS0+cGx1Z2lucygpOwogICAgIGlmIChpbmRleCA+PSBwbHVnaW5zLnNpemUoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIFBsdWdpbjo6Y3JlYXRlKGRhdGEsIGluZGV4KS5nZXQo
KTsKQEAgLTU4LDEyICs1OCwxMiBAQCBQYXNzUmVmUHRyPFBsdWdpbj4gUGx1Z2luQXJyYXk6Oml0
ZW0odW5zCiAKIGJvb2wgUGx1Z2luQXJyYXk6OmNhbkdldEl0ZW1zRm9yTmFtZShjb25zdCBBdG9t
aWNTdHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKLSAgICBQbHVnaW5EYXRhKiBkYXRhID0gZ2V0UGx1
Z2luRGF0YSgpOworICAgIFBsdWdpbkRhdGEqIGRhdGEgPSBwbHVnaW5EYXRhKCk7CiAgICAgaWYg
KCFkYXRhKQogICAgICAgICByZXR1cm4gMDsKLSAgICBjb25zdCBWZWN0b3I8UGx1Z2luSW5mbyo+
JiBwbHVnaW5zID0gZGF0YS0+cGx1Z2lucygpOworICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZv
PiYgcGx1Z2lucyA9IGRhdGEtPnBsdWdpbnMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcGx1Z2lucy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAocGx1Z2luc1tpXS0+bmFtZSA9
PSBwcm9wZXJ0eU5hbWUpCisgICAgICAgIGlmIChwbHVnaW5zW2ldLm5hbWUgPT0gcHJvcGVydHlO
YW1lKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsK
QEAgLTcxLDEyICs3MSwxMiBAQCBib29sIFBsdWdpbkFycmF5OjpjYW5HZXRJdGVtc0Zvck5hbWUo
Y29uCiAKIFBhc3NSZWZQdHI8UGx1Z2luPiBQbHVnaW5BcnJheTo6bmFtZWRJdGVtKGNvbnN0IEF0
b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKQogewotICAgIFBsdWdpbkRhdGEqIGRhdGEgPSBnZXRQ
bHVnaW5EYXRhKCk7CisgICAgUGx1Z2luRGF0YSogZGF0YSA9IHBsdWdpbkRhdGEoKTsKICAgICBp
ZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiAwOwotICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZv
Kj4mIHBsdWdpbnMgPSBkYXRhLT5wbHVnaW5zKCk7CisgICAgY29uc3QgVmVjdG9yPFBsdWdpbklu
Zm8+JiBwbHVnaW5zID0gZGF0YS0+cGx1Z2lucygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBwbHVnaW5zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChwbHVnaW5zW2ldLT5uYW1l
ID09IHByb3BlcnR5TmFtZSkKKyAgICAgICAgaWYgKHBsdWdpbnNbaV0ubmFtZSA9PSBwcm9wZXJ0
eU5hbWUpCiAgICAgICAgICAgICByZXR1cm4gUGx1Z2luOjpjcmVhdGUoZGF0YSwgaSkuZ2V0KCk7
CiAgICAgfQogICAgIHJldHVybiAwOwpAQCAtODcsMTQgKzg3LDE0IEBAIHZvaWQgUGx1Z2luQXJy
YXk6OnJlZnJlc2goYm9vbCByZWxvYWQpCiAgICAgUGFnZTo6cmVmcmVzaFBsdWdpbnMocmVsb2Fk
KTsKIH0KIAotUGx1Z2luRGF0YSogUGx1Z2luQXJyYXk6OmdldFBsdWdpbkRhdGEoKSBjb25zdAor
UGx1Z2luRGF0YSogUGx1Z2luQXJyYXk6OnBsdWdpbkRhdGEoKSBjb25zdAogewogICAgIGlmICgh
bV9mcmFtZSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgUGFnZSogcCA9IG1fZnJhbWUtPnBhZ2Uo
KTsKLSAgICBpZiAoIXApCisgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBp
ZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBwLT5wbHVnaW5EYXRhKCk7
CisgICAgcmV0dXJuIHBhZ2UtPnBsdWdpbkRhdGEoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkFycmF5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbHVnaW5zL1BsdWdpbkFycmF5LmgJKHJldmlzaW9uIDYwMTg4KQorKysgV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpbkFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUGx1Z2luQXJyYXko
RnJhbWUqKTsKLSAgICAgICAgUGx1Z2luRGF0YSogZ2V0UGx1Z2luRGF0YSgpIGNvbnN0OworICAg
ICAgICBQbHVnaW5EYXRhKiBwbHVnaW5EYXRhKCkgY29uc3Q7CiAKICAgICAgICAgRnJhbWUqIG1f
ZnJhbWU7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5jcHAJKHJldmlzaW9uIDYwMTg4
KQorKysgV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MiwzMSArMzIsMzMgQEAgUGx1Z2luRGF0YTo6UGx1Z2luRGF0YShjb25zdCBQYWdlKiBwYWdlKQog
ICAgIGluaXRQbHVnaW5zKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wbHVn
aW5zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFBsdWdpbkluZm8qIHBsdWdpbiA9IG1f
cGx1Z2luc1tpXTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHBsdWdpbi0+bWlt
ZXMuc2l6ZSgpOyArK2opCi0gICAgICAgICAgICBtX21pbWVzLmFwcGVuZChwbHVnaW4tPm1pbWVz
W2pdKTsKKyAgICAgICAgY29uc3QgUGx1Z2luSW5mbyYgcGx1Z2luID0gbV9wbHVnaW5zW2ldOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgcGx1Z2luLm1pbWVzLnNpemUoKTsgKytq
KQorICAgICAgICAgICAgbV9taW1lcy5hcHBlbmQocGx1Z2luLm1pbWVzW2pdKTsKICAgICB9CiB9
CiAKIFBsdWdpbkRhdGE6On5QbHVnaW5EYXRhKCkKIHsKLSAgICBkZWxldGVBbGxWYWx1ZXMobV9w
bHVnaW5zKTsKLSAgICBkZWxldGVBbGxWYWx1ZXMobV9taW1lcyk7CiB9CiAKIGJvb2wgUGx1Z2lu
RGF0YTo6c3VwcG9ydHNNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAogewog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbWVzLnNpemUoKTsgKytpKQotICAgICAg
ICBpZiAobV9taW1lc1tpXS0+dHlwZSA9PSBtaW1lVHlwZSkKKyAgICAgICAgaWYgKG1fbWltZXNb
aV0udHlwZSA9PSBtaW1lVHlwZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAogU3RyaW5nIFBsdWdpbkRhdGE6OnBsdWdpbk5hbWVGb3JNaW1lVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAogewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX21pbWVzLnNpemUoKTsgKytpKQotICAgICAgICBpZiAobV9taW1lc1tpXS0+dHlwZSA9
PSBtaW1lVHlwZSkKLSAgICAgICAgICAgIHJldHVybiBtX21pbWVzW2ldLT5wbHVnaW4tPm5hbWU7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWltZXMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgY29uc3QgTWltZUNsYXNzSW5mbyYgaW5mbyA9IG1fbWltZXNbaV07CisgICAgCisgICAg
ICAgIGlmIChpbmZvLnR5cGUgPT0gbWltZVR5cGUpCisgICAgICAgICAgICByZXR1cm4gbV9wbHVn
aW5zW2luZm8ucGx1Z2luSW5kZXhdLm5hbWU7CisgICAgfQorCiAgICAgcmV0dXJuIFN0cmluZygp
OwogfQogCkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgJKHJldmlzaW9uIDYwMTg4KQorKysgV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNDggKzI2LDUzIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFBhZ2U7Ci0gICAgc3RydWN0IFBs
dWdpbkluZm87CitjbGFzcyBQYWdlOworc3RydWN0IFBsdWdpbkluZm87CiAKLSAgICBzdHJ1Y3Qg
TWltZUNsYXNzSW5mbyA6IE5vbmNvcHlhYmxlIHsKLSAgICAgICAgU3RyaW5nIHR5cGU7Ci0gICAg
ICAgIFN0cmluZyBkZXNjOwotICAgICAgICBTdHJpbmcgc3VmZml4ZXM7Ci0gICAgICAgIFBsdWdp
bkluZm8qIHBsdWdpbjsKLSAgICB9OwotCi0gICAgc3RydWN0IFBsdWdpbkluZm8gOiBOb25jb3B5
YWJsZSB7Ci0gICAgICAgIFN0cmluZyBuYW1lOwotICAgICAgICBTdHJpbmcgZmlsZTsKLSAgICAg
ICAgU3RyaW5nIGRlc2M7Ci0gICAgICAgIFZlY3RvcjxNaW1lQ2xhc3NJbmZvKj4gbWltZXM7Ci0g
ICAgfTsKLQotICAgIC8vIEZJWE1FOiBtZXJnZSB3aXRoIFBsdWdpbkRhdGFiYXNlIGluIHRoZSBm
dXR1cmUKLSAgICBjbGFzcyBQbHVnaW5EYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8UGx1Z2luRGF0
YT4gewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luRGF0YT4g
Y3JlYXRlKGNvbnN0IFBhZ2UqIHBhZ2UpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVnaW5EYXRh
KHBhZ2UpKTsgfQotICAgICAgICB+UGx1Z2luRGF0YSgpOwotCi0gICAgICAgIHZvaWQgZGlzY29u
bmVjdFBhZ2UoKSB7IG1fcGFnZSA9IDA7IH0KLSAgICAgICAgY29uc3QgUGFnZSogcGFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFnZTsgfQotCi0gICAgICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZv
Kj4mIHBsdWdpbnMoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbnM7IH0KLSAgICAgICAgY29uc3Qg
VmVjdG9yPE1pbWVDbGFzc0luZm8qPiYgbWltZXMoKSBjb25zdCB7IHJldHVybiBtX21pbWVzOyB9
Ci0KLSAgICAgICAgYm9vbCBzdXBwb3J0c01pbWVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
IGNvbnN0OwotICAgICAgICBTdHJpbmcgcGx1Z2luTmFtZUZvck1pbWVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpIGNvbnN0OwotCi0gICAgICAgIHN0YXRpYyB2b2lkIHJlZnJlc2goKTsKLQot
ICAgIHByaXZhdGU6Ci0gICAgICAgIFBsdWdpbkRhdGEoY29uc3QgUGFnZSopOwotICAgICAgICB2
b2lkIGluaXRQbHVnaW5zKCk7Ci0KLSAgICAgICAgVmVjdG9yPFBsdWdpbkluZm8qPiBtX3BsdWdp
bnM7Ci0gICAgICAgIFZlY3RvcjxNaW1lQ2xhc3NJbmZvKj4gbV9taW1lczsKLSAgICAgICAgY29u
c3QgUGFnZSogbV9wYWdlOwotICAgIH07CitzdHJ1Y3QgTWltZUNsYXNzSW5mbyB7CisgICAgU3Ry
aW5nIHR5cGU7CisgICAgU3RyaW5nIGRlc2M7CisgICAgU3RyaW5nIHN1ZmZpeGVzOworICAgIHVu
c2lnbmVkIHBsdWdpbkluZGV4OworfTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBN
aW1lQ2xhc3NJbmZvJiBhLCBjb25zdCBNaW1lQ2xhc3NJbmZvJiBiKQoreworICAgIHJldHVybiBh
LnR5cGUgPT0gYi50eXBlICYmIGEuZGVzYyA9PSBiLmRlc2MgJiYgYS5zdWZmaXhlcyA9PSBiLnN1
ZmZpeGVzICYmIGEucGx1Z2luSW5kZXggPT0gYi5wbHVnaW5JbmRleDsKK30KKworc3RydWN0IFBs
dWdpbkluZm8geworICAgIFN0cmluZyBuYW1lOworICAgIFN0cmluZyBmaWxlOworICAgIFN0cmlu
ZyBkZXNjOworICAgIFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiBtaW1lczsKK307CisKKy8vIEZJWE1F
OiBtZXJnZSB3aXRoIFBsdWdpbkRhdGFiYXNlIGluIHRoZSBmdXR1cmUKK2NsYXNzIFBsdWdpbkRh
dGEgOiBwdWJsaWMgUmVmQ291bnRlZDxQbHVnaW5EYXRhPiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8UGx1Z2luRGF0YT4gY3JlYXRlKGNvbnN0IFBhZ2UqIHBhZ2UpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBQbHVnaW5EYXRhKHBhZ2UpKTsgfQorICAgIH5QbHVnaW5EYXRhKCk7CisK
KyAgICB2b2lkIGRpc2Nvbm5lY3RQYWdlKCkgeyBtX3BhZ2UgPSAwOyB9CisgICAgY29uc3QgUGFn
ZSogcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQorCisgICAgY29uc3QgVmVjdG9yPFBs
dWdpbkluZm8+JiBwbHVnaW5zKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5zOyB9CisgICAgY29u
c3QgVmVjdG9yPE1pbWVDbGFzc0luZm8+JiBtaW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fbWltZXM7
IH0KKworICAgIGJvb2wgc3VwcG9ydHNNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBj
b25zdDsKKyAgICBTdHJpbmcgcGx1Z2luTmFtZUZvck1pbWVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpIGNvbnN0OworCisgICAgc3RhdGljIHZvaWQgcmVmcmVzaCgpOworCitwcml2YXRlOgor
ICAgIFBsdWdpbkRhdGEoY29uc3QgUGFnZSopOworICAgIHZvaWQgaW5pdFBsdWdpbnMoKTsKKwor
ICAgIFZlY3RvcjxQbHVnaW5JbmZvPiBtX3BsdWdpbnM7CisgICAgVmVjdG9yPE1pbWVDbGFzc0lu
Zm8+IG1fbWltZXM7CisgICAgY29uc3QgUGFnZSogbV9wYWdlOworfTsKIAogfQogCkluZGV4OiBX
ZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vUGx1Z2luRGF0YUNocm9taXVtLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vUGx1Z2luRGF0YUNocm9taXVtLmNwcAkocmV2
aXNpb24gNjAxODgpCisrKyBXZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vUGx1Z2luRGF0YUNocm9t
aXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMjMgKzM1LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1zdGF0aWMgUGx1Z2luSW5mbyogY2xvbmUoY29uc3QgUGx1Z2luSW5mbyogaW5m
bykKLXsKLSAgICBQbHVnaW5JbmZvKiByZXN1bHQgPSBuZXcgUGx1Z2luSW5mbygpOwotICAgIHJl
c3VsdC0+bmFtZSA9IGluZm8tPm5hbWU7Ci0gICAgcmVzdWx0LT5kZXNjID0gaW5mby0+ZGVzYzsK
LSAgICByZXN1bHQtPmZpbGUgPSBpbmZvLT5maWxlOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgaW5mby0+bWltZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgTWltZUNsYXNzSW5mbyogbWlt
ZSA9IG5ldyBNaW1lQ2xhc3NJbmZvKCk7Ci0gICAgICAgIG1pbWUtPnR5cGUgPSBpbmZvLT5taW1l
c1tpXS0+dHlwZTsKLSAgICAgICAgbWltZS0+ZGVzYyA9IGluZm8tPm1pbWVzW2ldLT5kZXNjOwot
ICAgICAgICBtaW1lLT5zdWZmaXhlcyA9IGluZm8tPm1pbWVzW2ldLT5zdWZmaXhlczsKLSAgICAg
ICAgbWltZS0+cGx1Z2luID0gcmVzdWx0OwotICAgICAgICByZXN1bHQtPm1pbWVzLmFwcGVuZCht
aW1lKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogY2xhc3MgUGx1Z2luQ2FjaGUg
ewogcHVibGljOgogICAgIFBsdWdpbkNhY2hlKCkgOiBtX2xvYWRlZChmYWxzZSksIG1fcmVmcmVz
aChmYWxzZSkge30KQEAgLTU5LDE1ICs0MiwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc2V0
KGJvb2wgcmVmcmVzaCkKICAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9w
bHVnaW5zLnNpemUoKTsgKytpKQotICAgICAgICAgICAgZGVsZXRlQWxsVmFsdWVzKG1fcGx1Z2lu
c1tpXS0+bWltZXMpOwotICAgICAgICBkZWxldGVBbGxWYWx1ZXMobV9wbHVnaW5zKTsKICAgICAg
ICAgbV9wbHVnaW5zLmNsZWFyKCk7CiAgICAgICAgIG1fbG9hZGVkID0gZmFsc2U7CiAgICAgICAg
IG1fcmVmcmVzaCA9IHJlZnJlc2g7CiAgICAgfQogCi0gICAgY29uc3QgVmVjdG9yPFBsdWdpbklu
Zm8qPiYgcGx1Z2lucygpCisgICAgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8+JiBwbHVnaW5zKCkK
ICAgICB7CiAgICAgICAgIGlmICghbV9sb2FkZWQpIHsKICAgICAgICAgICAgIENocm9taXVtQnJp
ZGdlOjpwbHVnaW5zKG1fcmVmcmVzaCwgJm1fcGx1Z2lucyk7CkBAIC03OCw3ICs1OCw3IEBAIHB1
YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgVmVjdG9yPFBsdWdpbkluZm8qPiBtX3BsdWdp
bnM7CisgICAgVmVjdG9yPFBsdWdpbkluZm8+IG1fcGx1Z2luczsKICAgICBib29sIG1fbG9hZGVk
OwogICAgIGJvb2wgbV9yZWZyZXNoOwogfTsKQEAgLTg3LDkgKzY3LDkgQEAgc3RhdGljIFBsdWdp
bkNhY2hlIHBsdWdpbkNhY2hlOwogCiB2b2lkIFBsdWdpbkRhdGE6OmluaXRQbHVnaW5zKCkKIHsK
LSAgICBjb25zdCBWZWN0b3I8UGx1Z2luSW5mbyo+JiBwbHVnaW5zID0gcGx1Z2luQ2FjaGUucGx1
Z2lucygpOworICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZvPiYgcGx1Z2lucyA9IHBsdWdpbkNh
Y2hlLnBsdWdpbnMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6ZSgp
OyArK2kpCi0gICAgICAgIG1fcGx1Z2lucy5hcHBlbmQoY2xvbmUocGx1Z2luc1tpXSkpOworICAg
ICAgICBtX3BsdWdpbnMuYXBwZW5kKHBsdWdpbnNbaV0pOwogfQogCiB2b2lkIFBsdWdpbkRhdGE6
OnJlZnJlc2goKQpAQCAtMTAwLDE1ICs4MCwxNSBAQCB2b2lkIFBsdWdpbkRhdGE6OnJlZnJlc2go
KQogCiBTdHJpbmcgZ2V0UGx1Z2luTWltZVR5cGVGcm9tRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
ZXh0ZW5zaW9uKQogewotICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZvKj4mIHBsdWdpbnMgPSBw
bHVnaW5DYWNoZS5wbHVnaW5zKCk7CisgICAgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8+JiBwbHVn
aW5zID0gcGx1Z2luQ2FjaGUucGx1Z2lucygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cGx1Z2lucy5zaXplKCk7ICsraSkgewotICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHBs
dWdpbnNbaV0tPm1pbWVzLnNpemUoKTsgKytqKSB7Ci0gICAgICAgICAgICBNaW1lQ2xhc3NJbmZv
KiBtaW1lID0gcGx1Z2luc1tpXS0+bWltZXNbal07CisgICAgICAgIGZvciAoc2l6ZV90IGogPSAw
OyBqIDwgcGx1Z2luc1tpXS5taW1lcy5zaXplKCk7ICsraikgeworICAgICAgICAgICAgY29uc3Qg
TWltZUNsYXNzSW5mbyYgbWltZSA9IHBsdWdpbnNbaV0ubWltZXNbal07CiAgICAgICAgICAgICBW
ZWN0b3I8U3RyaW5nPiBleHRlbnNpb25zOwotICAgICAgICAgICAgbWltZS0+c3VmZml4ZXMuc3Bs
aXQoIiwiLCBleHRlbnNpb25zKTsKKyAgICAgICAgICAgIG1pbWUuc3VmZml4ZXMuc3BsaXQoIiwi
LCBleHRlbnNpb25zKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgZXh0ZW5z
aW9ucy5zaXplKCk7ICsraykgewogICAgICAgICAgICAgICAgIGlmIChleHRlbnNpb24gPT0gZXh0
ZW5zaW9uc1trXSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1pbWUtPnR5cGU7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBtaW1lLnR5cGU7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpbkRhdGFHdGsuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luRGF0YUd0ay5jcHAJKHJldmlz
aW9uIDYwMTg4KQorKysgV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5EYXRhR3RrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsMzAgKzMzLDMwIEBAIHZvaWQgUGx1Z2luRGF0YTo6aW5pdFBsdWdp
bnMoKQogICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5QYWNrYWdlKj4gJnBsdWdpbnMgPSBkYi0+cGx1
Z2lucygpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwbHVnaW5zLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIFBsdWdpbkluZm8qIGluZm8gPSBuZXcgUGx1Z2luSW5mbzsKKyAg
ICAgICAgUGx1Z2luSW5mbyBpbmZvOwogICAgICAgICBQbHVnaW5QYWNrYWdlKiBwYWNrYWdlID0g
cGx1Z2luc1tpXTsKIAotICAgICAgICBpbmZvLT5uYW1lID0gcGFja2FnZS0+bmFtZSgpOwotICAg
ICAgICBpbmZvLT5maWxlID0gcGFja2FnZS0+ZmlsZU5hbWUoKTsKLSAgICAgICAgaW5mby0+ZGVz
YyA9IHBhY2thZ2UtPmRlc2NyaXB0aW9uKCk7CisgICAgICAgIGluZm8ubmFtZSA9IHBhY2thZ2Ut
Pm5hbWUoKTsKKyAgICAgICAgaW5mby5maWxlID0gcGFja2FnZS0+ZmlsZU5hbWUoKTsKKyAgICAg
ICAgaW5mby5kZXNjID0gcGFja2FnZS0+ZGVzY3JpcHRpb24oKTsKIAogICAgICAgICBjb25zdCBN
SU1FVG9EZXNjcmlwdGlvbnNNYXAmIG1pbWVUb0Rlc2NyaXB0aW9ucyA9IHBhY2thZ2UtPm1pbWVU
b0Rlc2NyaXB0aW9ucygpOwogICAgICAgICBNSU1FVG9EZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5lbmQoKTsKICAgICAgICAgZm9yIChNSU1F
VG9EZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWltZVRvRGVzY3JpcHRpb25z
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgTWltZUNsYXNzSW5mbyog
bWltZSA9IG5ldyBNaW1lQ2xhc3NJbmZvOwotICAgICAgICAgICAgaW5mby0+bWltZXMuYXBwZW5k
KG1pbWUpOworICAgICAgICAgICAgTWltZUNsYXNzSW5mbyBtaW1lOwogCi0gICAgICAgICAgICBt
aW1lLT50eXBlID0gaXQtPmZpcnN0OwotICAgICAgICAgICAgbWltZS0+ZGVzYyA9IGl0LT5zZWNv
bmQ7Ci0gICAgICAgICAgICBtaW1lLT5wbHVnaW4gPSBpbmZvOworICAgICAgICAgICAgbWltZS50
eXBlID0gaXQtPmZpcnN0OworICAgICAgICAgICAgbWltZS5kZXNjID0gaXQtPnNlY29uZDsKKyAg
ICAgICAgICAgIG1pbWUucGx1Z2luSW5kZXggPSBtX3BsdWdpbnMuc2l6ZSgpOworICAgICAgICAg
ICAgaW5mby5taW1lcy5hcHBlbmQobWltZSk7CiAKLSAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+
IGV4dGVuc2lvbnMgPSBwYWNrYWdlLT5taW1lVG9FeHRlbnNpb25zKCkuZ2V0KG1pbWUtPnR5cGUp
OworICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9ucyA9IHBhY2thZ2UtPm1pbWVU
b0V4dGVuc2lvbnMoKS5nZXQobWltZS50eXBlKTsKIAogICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGV4dGVuc2lvbnMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICBp
ZiAoaSA+IDApCi0gICAgICAgICAgICAgICAgICAgIG1pbWUtPnN1ZmZpeGVzICs9ICIsIjsKKyAg
ICAgICAgICAgICAgICAgICAgbWltZS5zdWZmaXhlcyArPSAiLCI7CiAKLSAgICAgICAgICAgICAg
ICBtaW1lLT5zdWZmaXhlcyArPSBleHRlbnNpb25zW2ldOworICAgICAgICAgICAgICAgIG1pbWUu
c3VmZml4ZXMgKz0gZXh0ZW5zaW9uc1tpXTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCklu
ZGV4OiBXZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpbkRhdGFNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbHVnaW5zL21hYy9QbHVnaW5EYXRhTWFjLm1tCShyZXZpc2lvbiA2MDE4OCkKKysr
IFdlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luRGF0YU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzksMjIgKzM5LDI0IEBAIHZvaWQgUGx1Z2luRGF0YTo6aW5pdFBsdWdpbnMoKQogCiAgICAgTlNB
cnJheSogcGx1Z2lucyA9IFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIHBsdWdp
bnNJbmZvXTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IFtwbHVnaW5zIGNvdW50
XTsgKytpKSB7Ci0gICAgICAgIFBsdWdpbkluZm8qIHBsdWdpbkluZm8gPSBuZXcgUGx1Z2luSW5m
bzsKKyAgICAgICAgUGx1Z2luSW5mbyBwbHVnaW5JbmZvOwogCiAgICAgICAgIGlkIDxXZWJDb3Jl
UGx1Z2luSW5mbz4gcGx1Z2luID0gW3BsdWdpbnMgb2JqZWN0QXRJbmRleDppXTsKICAgICAKLSAg
ICAgICAgcGx1Z2luSW5mby0+bmFtZSA9IFtwbHVnaW4gbmFtZV07Ci0gICAgICAgIHBsdWdpbklu
Zm8tPmZpbGUgPSBbcGx1Z2luIGZpbGVuYW1lXTsKLSAgICAgICAgcGx1Z2luSW5mby0+ZGVzYyA9
IFtwbHVnaW4gcGx1Z2luRGVzY3JpcHRpb25dOworICAgICAgICBwbHVnaW5JbmZvLm5hbWUgPSBb
cGx1Z2luIG5hbWVdOworICAgICAgICBwbHVnaW5JbmZvLmZpbGUgPSBbcGx1Z2luIGZpbGVuYW1l
XTsKKyAgICAgICAgcGx1Z2luSW5mby5kZXNjID0gW3BsdWdpbiBwbHVnaW5EZXNjcmlwdGlvbl07
CiAKICAgICAgICAgTlNFbnVtZXJhdG9yKiBNSU1FVHlwZUVudW1lcmF0b3IgPSBbcGx1Z2luIE1J
TUVUeXBlRW51bWVyYXRvcl07CiAgICAgICAgIHdoaWxlIChOU1N0cmluZyogTUlNRSA9IFtNSU1F
VHlwZUVudW1lcmF0b3IgbmV4dE9iamVjdF0pIHsKLSAgICAgICAgICAgIE1pbWVDbGFzc0luZm8q
IG1pbWUgPSBuZXcgTWltZUNsYXNzSW5mbzsKLSAgICAgICAgICAgIHBsdWdpbkluZm8tPm1pbWVz
LmFwcGVuZChtaW1lKTsKLSAgICAgICAgICAgIG1pbWUtPnR5cGUgPSBTdHJpbmcoTUlNRSkubG93
ZXIoKTsKLSAgICAgICAgICAgIG1pbWUtPnN1ZmZpeGVzID0gW1twbHVnaW4gZXh0ZW5zaW9uc0Zv
ck1JTUVUeXBlOk1JTUVdIGNvbXBvbmVudHNKb2luZWRCeVN0cmluZzpAIiwiXTsKLSAgICAgICAg
ICAgIG1pbWUtPmRlc2MgPSBbcGx1Z2luIGRlc2NyaXB0aW9uRm9yTUlNRVR5cGU6TUlNRV07Ci0g
ICAgICAgICAgICBtaW1lLT5wbHVnaW4gPSBwbHVnaW5JbmZvOworICAgICAgICAgICAgTWltZUNs
YXNzSW5mbyBtaW1lOworCisgICAgICAgICAgICBtaW1lLnR5cGUgPSBTdHJpbmcoTUlNRSkubG93
ZXIoKTsKKyAgICAgICAgICAgIG1pbWUuc3VmZml4ZXMgPSBbW3BsdWdpbiBleHRlbnNpb25zRm9y
TUlNRVR5cGU6TUlNRV0gY29tcG9uZW50c0pvaW5lZEJ5U3RyaW5nOkAiLCJdOworICAgICAgICAg
ICAgbWltZS5kZXNjID0gW3BsdWdpbiBkZXNjcmlwdGlvbkZvck1JTUVUeXBlOk1JTUVdOworICAg
ICAgICAgICAgbWltZS5wbHVnaW5JbmRleCA9IG1fcGx1Z2lucy5zaXplKCk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIHBsdWdpbkluZm8ubWltZXMuYXBwZW5kKG1pbWUpOwogICAgICAgICB9
CiAKICAgICAgICAgbV9wbHVnaW5zLmFwcGVuZChwbHVnaW5JbmZvKTsKSW5kZXg6IFdlYkNvcmUv
cGx1Z2lucy9xdC9QbHVnaW5EYXRhUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lu
cy9xdC9QbHVnaW5EYXRhUXQuY3BwCShyZXZpc2lvbiA2MDE4OCkKKysrIFdlYkNvcmUvcGx1Z2lu
cy9xdC9QbHVnaW5EYXRhUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxOSArNDIsMjAgQEAg
dm9pZCBQbHVnaW5EYXRhOjppbml0UGx1Z2lucygpCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgcXBsdWdpbnMuY291bnQoKTsgKytpKSB7CiAgICAgICAgICAgICBjb25zdCBRV2ViUGx1Z2lu
RmFjdG9yeTo6UGx1Z2luJiBxcGx1Z2luID0gcXBsdWdpbnMuYXQoaSk7CiAKLSAgICAgICAgICAg
IFBsdWdpbkluZm8qIGluZm8gPSBuZXcgUGx1Z2luSW5mbzsKLSAgICAgICAgICAgIGluZm8tPm5h
bWUgPSBxcGx1Z2luLm5hbWU7Ci0gICAgICAgICAgICBpbmZvLT5kZXNjID0gcXBsdWdpbi5kZXNj
cmlwdGlvbjsKKyAgICAgICAgICAgIFBsdWdpbkluZm8gaW5mbzsKKyAgICAgICAgICAgIGluZm8u
bmFtZSA9IHFwbHVnaW4ubmFtZTsKKyAgICAgICAgICAgIGluZm8uZGVzYyA9IHFwbHVnaW4uZGVz
Y3JpcHRpb247CiAKICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgcXBsdWdpbi5taW1l
VHlwZXMuY291bnQoKTsgKytqKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgUVdlYlBsdWdpbkZh
Y3Rvcnk6Ok1pbWVUeXBlJiBtaW1lVHlwZSA9IHFwbHVnaW4ubWltZVR5cGVzLmF0KGopOwogCi0g
ICAgICAgICAgICAgICAgTWltZUNsYXNzSW5mbyogbWltZUluZm8gPSBuZXcgTWltZUNsYXNzSW5m
bzsKLSAgICAgICAgICAgICAgICBtaW1lSW5mby0+dHlwZSA9IG1pbWVUeXBlLm5hbWU7Ci0gICAg
ICAgICAgICAgICAgbWltZUluZm8tPmRlc2MgPSBtaW1lVHlwZS5kZXNjcmlwdGlvbjsKLSAgICAg
ICAgICAgICAgICBtaW1lSW5mby0+c3VmZml4ZXMgPSBtaW1lVHlwZS5maWxlRXh0ZW5zaW9ucy5q
b2luKFFMYXRpbjFTdHJpbmcoIjsgIikpOworICAgICAgICAgICAgICAgIE1pbWVDbGFzc0luZm8g
bWltZUluZm87CisgICAgICAgICAgICAgICAgbWltZUluZm8udHlwZSA9IG1pbWVUeXBlLm5hbWU7
CisgICAgICAgICAgICAgICAgbWltZUluZm8uZGVzYyA9IG1pbWVUeXBlLmRlc2NyaXB0aW9uOwor
ICAgICAgICAgICAgICAgIG1pbWVJbmZvLnN1ZmZpeGVzID0gbWltZVR5cGUuZmlsZUV4dGVuc2lv
bnMuam9pbihRTGF0aW4xU3RyaW5nKCI7ICIpKTsKKyAgICAgICAgICAgICAgICBtaW1lSW5mby5w
bHVnaW5JbmRleCA9IG1fcGx1Z2lucy5zaXplKCk7CiAKLSAgICAgICAgICAgICAgICBpbmZvLT5t
aW1lcy5hcHBlbmQobWltZUluZm8pOworICAgICAgICAgICAgICAgIGluZm8ubWltZXMuYXBwZW5k
KG1pbWVJbmZvKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbV9wbHVnaW5zLmFwcGVu
ZChpbmZvKTsKQEAgLTY1LDMwICs2NiwzMCBAQCB2b2lkIFBsdWdpbkRhdGE6OmluaXRQbHVnaW5z
KCkKICAgICBjb25zdCBWZWN0b3I8UGx1Z2luUGFja2FnZSo+ICZwbHVnaW5zID0gZGItPnBsdWdp
bnMoKTsKIAogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGx1Z2lucy5zaXplKCk7
ICsraSkgewotICAgICAgICBQbHVnaW5JbmZvKiBpbmZvID0gbmV3IFBsdWdpbkluZm87CisgICAg
ICAgIFBsdWdpbkluZm8gaW5mbzsKICAgICAgICAgUGx1Z2luUGFja2FnZSogcGFja2FnZSA9IHBs
dWdpbnNbaV07CiAKLSAgICAgICAgaW5mby0+bmFtZSA9IHBhY2thZ2UtPm5hbWUoKTsKLSAgICAg
ICAgaW5mby0+ZmlsZSA9IHBhY2thZ2UtPmZpbGVOYW1lKCk7Ci0gICAgICAgIGluZm8tPmRlc2Mg
PSBwYWNrYWdlLT5kZXNjcmlwdGlvbigpOworICAgICAgICBpbmZvLm5hbWUgPSBwYWNrYWdlLT5u
YW1lKCk7CisgICAgICAgIGluZm8uZmlsZSA9IHBhY2thZ2UtPmZpbGVOYW1lKCk7CisgICAgICAg
IGluZm8uZGVzYyA9IHBhY2thZ2UtPmRlc2NyaXB0aW9uKCk7CiAKICAgICAgICAgY29uc3QgTUlN
RVRvRGVzY3JpcHRpb25zTWFwJiBtaW1lVG9EZXNjcmlwdGlvbnMgPSBwYWNrYWdlLT5taW1lVG9E
ZXNjcmlwdGlvbnMoKTsKICAgICAgICAgTUlNRVRvRGVzY3JpcHRpb25zTWFwOjpjb25zdF9pdGVy
YXRvciBlbmQgPSBtaW1lVG9EZXNjcmlwdGlvbnMuZW5kKCk7CiAgICAgICAgIGZvciAoTUlNRVRv
RGVzY3JpcHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIE1pbWVDbGFzc0luZm8qIG1p
bWUgPSBuZXcgTWltZUNsYXNzSW5mbzsKLSAgICAgICAgICAgIGluZm8tPm1pbWVzLmFwcGVuZCht
aW1lKTsKKyAgICAgICAgICAgIE1pbWVDbGFzc0luZm8gbWltZTsKKyAgICAgICAgICAgIGluZm8u
bWltZXMuYXBwZW5kKG1pbWUpOwogCi0gICAgICAgICAgICBtaW1lLT50eXBlID0gaXQtPmZpcnN0
OwotICAgICAgICAgICAgbWltZS0+ZGVzYyA9IGl0LT5zZWNvbmQ7Ci0gICAgICAgICAgICBtaW1l
LT5wbHVnaW4gPSBpbmZvOworICAgICAgICAgICAgbWltZS50eXBlID0gaXQtPmZpcnN0OworICAg
ICAgICAgICAgbWltZS5kZXNjID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIG1pbWUucGx1Z2lu
SW5kZXggPSBtX3BsdWdpbnMuc2l6ZSgpOwogCi0gICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBl
eHRlbnNpb25zID0gcGFja2FnZS0+bWltZVRvRXh0ZW5zaW9ucygpLmdldChtaW1lLT50eXBlKTsK
KyAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbnMgPSBwYWNrYWdlLT5taW1lVG9F
eHRlbnNpb25zKCkuZ2V0KG1pbWUudHlwZSk7CiAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBleHRlbnNpb25zLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgaWYg
KGkgPiAwKQotICAgICAgICAgICAgICAgICAgICBtaW1lLT5zdWZmaXhlcyArPSAiLCI7CisgICAg
ICAgICAgICAgICAgICAgIG1pbWUuc3VmZml4ZXMgKz0gIiwiOwogCi0gICAgICAgICAgICAgICAg
bWltZS0+c3VmZml4ZXMgKz0gZXh0ZW5zaW9uc1tpXTsKKyAgICAgICAgICAgICAgICBtaW1lLnN1
ZmZpeGVzICs9IGV4dGVuc2lvbnNbaV07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApJbmRl
eDogV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhV2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpbkRhdGFXaW4uY3BwCShyZXZpc2lvbiA2MDE4OCkKKysr
IFdlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luRGF0YVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDMxICszMiwzMyBAQCB2b2lkIFBsdWdpbkRhdGE6OmluaXRQbHVnaW5zKCkKICAgICBjb25z
dCBWZWN0b3I8UGx1Z2luUGFja2FnZSo+ICZwbHVnaW5zID0gZGItPnBsdWdpbnMoKTsKIAogICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGx1Z2lucy5zaXplKCk7ICsraSkgewotICAg
ICAgICBQbHVnaW5JbmZvKiBpbmZvID0gbmV3IFBsdWdpbkluZm87CiAgICAgICAgIFBsdWdpblBh
Y2thZ2UqIHBhY2thZ2UgPSBwbHVnaW5zW2ldOwogCi0gICAgICAgIGluZm8tPm5hbWUgPSBwYWNr
YWdlLT5uYW1lKCk7Ci0gICAgICAgIGluZm8tPmZpbGUgPSBwYWNrYWdlLT5maWxlTmFtZSgpOwot
ICAgICAgICBpbmZvLT5kZXNjID0gcGFja2FnZS0+ZGVzY3JpcHRpb24oKTsKKyAgICAgICAgUGx1
Z2luSW5mbyBpbmZvOworICAgICAgICBpbmZvLm5hbWUgPSBwYWNrYWdlLT5uYW1lKCk7CisgICAg
ICAgIGluZm8uZmlsZSA9IHBhY2thZ2UtPmZpbGVOYW1lKCk7CisgICAgICAgIGluZm8uZGVzYyA9
IHBhY2thZ2UtPmRlc2NyaXB0aW9uKCk7CiAKICAgICAgICAgY29uc3QgTUlNRVRvRGVzY3JpcHRp
b25zTWFwJiBtaW1lVG9EZXNjcmlwdGlvbnMgPSBwYWNrYWdlLT5taW1lVG9EZXNjcmlwdGlvbnMo
KTsKICAgICAgICAgTUlNRVRvRGVzY3JpcHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBt
aW1lVG9EZXNjcmlwdGlvbnMuZW5kKCk7CiAgICAgICAgIGZvciAoTUlNRVRvRGVzY3JpcHRpb25z
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIE1pbWVDbGFzc0luZm8qIG1pbWUgPSBuZXcgTWlt
ZUNsYXNzSW5mbzsKLSAgICAgICAgICAgIGluZm8tPm1pbWVzLmFwcGVuZChtaW1lKTsKKyAgICAg
ICAgICAgIE1pbWVDbGFzc0luZm8gbWltZTsKIAotICAgICAgICAgICAgbWltZS0+dHlwZSA9IGl0
LT5maXJzdDsKLSAgICAgICAgICAgIG1pbWUtPmRlc2MgPSBpdC0+c2Vjb25kOwotICAgICAgICAg
ICAgbWltZS0+cGx1Z2luID0gaW5mbzsKKyAgICAgICAgICAgIG1pbWUudHlwZSA9IGl0LT5maXJz
dDsKKyAgICAgICAgICAgIG1pbWUuZGVzYyA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICBtaW1l
LnBsdWdpbkluZGV4ID0gbV9wbHVnaW5zLnNpemUoKTsKIAotICAgICAgICAgICAgVmVjdG9yPFN0
cmluZz4gZXh0ZW5zaW9ucyA9IHBhY2thZ2UtPm1pbWVUb0V4dGVuc2lvbnMoKS5nZXQobWltZS0+
dHlwZSk7CisgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBleHRlbnNpb25zID0gcGFja2FnZS0+
bWltZVRvRXh0ZW5zaW9ucygpLmdldChtaW1lLnR5cGUpOwogCiAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZXh0ZW5zaW9ucy5zaXplKCk7IGkrKykgewogICAgICAgICAgICAg
ICAgIGlmIChpID4gMCkKLSAgICAgICAgICAgICAgICAgICAgbWltZS0+c3VmZml4ZXMgKz0gIiwi
OworICAgICAgICAgICAgICAgICAgICBtaW1lLnN1ZmZpeGVzICs9ICIsIjsKIAotICAgICAgICAg
ICAgICAgIG1pbWUtPnN1ZmZpeGVzICs9IGV4dGVuc2lvbnNbaV07CisgICAgICAgICAgICAgICAg
bWltZS5zdWZmaXhlcyArPSBleHRlbnNpb25zW2ldOwogICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpbmZvLm1pbWVzLmFwcGVuZChtaW1lKTsKKwogICAgICAgICB9CiAKICAgICAgICAgbV9w
bHVnaW5zLmFwcGVuZChpbmZvKTsKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy93eC9QbHVnaW5EYXRh
V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy93eC9QbHVnaW5EYXRhV3guY3Bw
CShyZXZpc2lvbiA2MDE4OCkKKysrIFdlYkNvcmUvcGx1Z2lucy93eC9QbHVnaW5EYXRhV3guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSwzMSArMzksMzIgQEAgdm9pZCBQbHVnaW5EYXRhOjppbml0
UGx1Z2lucygpCiAgICAgY29uc3QgVmVjdG9yPFBsdWdpblBhY2thZ2UqPiAmcGx1Z2lucyA9IGRi
LT5wbHVnaW5zKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBsdWdpbnMu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgUGx1Z2luSW5mbyogaW5mbyA9IG5ldyBQbHVnaW5JbmZv
OworICAgICAgICBQbHVnaW5JbmZvIGluZm87CiAgICAgICAgIFBsdWdpblBhY2thZ2UqIHBhY2th
Z2UgPSBwbHVnaW5zW2ldOwogCi0gICAgICAgIGluZm8tPm5hbWUgPSBwYWNrYWdlLT5uYW1lKCk7
Ci0gICAgICAgIGluZm8tPmZpbGUgPSBwYWNrYWdlLT5maWxlTmFtZSgpOwotICAgICAgICBpbmZv
LT5kZXNjID0gcGFja2FnZS0+ZGVzY3JpcHRpb24oKTsKKyAgICAgICAgaW5mby5uYW1lID0gcGFj
a2FnZS0+bmFtZSgpOworICAgICAgICBpbmZvLmZpbGUgPSBwYWNrYWdlLT5maWxlTmFtZSgpOwor
ICAgICAgICBpbmZvLmRlc2MgPSBwYWNrYWdlLT5kZXNjcmlwdGlvbigpOwogCiAgICAgICAgIGNv
bnN0IE1JTUVUb0Rlc2NyaXB0aW9uc01hcCYgbWltZVRvRGVzY3JpcHRpb25zID0gcGFja2FnZS0+
bWltZVRvRGVzY3JpcHRpb25zKCk7CiAgICAgICAgIE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gbWltZVRvRGVzY3JpcHRpb25zLmVuZCgpOwogICAgICAgICBmb3Ig
KE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtaW1lVG9EZXNjcmlw
dGlvbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBNaW1lQ2xhc3NJ
bmZvKiBtaW1lID0gbmV3IE1pbWVDbGFzc0luZm87Ci0gICAgICAgICAgICBpbmZvLT5taW1lcy5h
cHBlbmQobWltZSk7CisgICAgICAgICAgICBNaW1lQ2xhc3NJbmZvIG1pbWU7CiAKLSAgICAgICAg
ICAgIG1pbWUtPnR5cGUgPSBpdC0+Zmlyc3Q7Ci0gICAgICAgICAgICBtaW1lLT5kZXNjID0gaXQt
PnNlY29uZDsKLSAgICAgICAgICAgIG1pbWUtPnBsdWdpbiA9IGluZm87CisgICAgICAgICAgICBt
aW1lLnR5cGUgPSBpdC0+Zmlyc3Q7CisgICAgICAgICAgICBtaW1lLmRlc2MgPSBpdC0+c2Vjb25k
OworICAgICAgICAgICAgbWltZS5wbHVnaW5JbmRleCA9IG1fcGx1Z2lucy5zaXplKCk7CiAKLSAg
ICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbnMgPSBwYWNrYWdlLT5taW1lVG9FeHRl
bnNpb25zKCkuZ2V0KG1pbWUtPnR5cGUpOworICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZXh0
ZW5zaW9ucyA9IHBhY2thZ2UtPm1pbWVUb0V4dGVuc2lvbnMoKS5nZXQobWltZS50eXBlKTsKIAog
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4dGVuc2lvbnMuc2l6ZSgpOyBp
KyspIHsKICAgICAgICAgICAgICAgICBpZiAoaSA+IDApCi0gICAgICAgICAgICAgICAgICAgIG1p
bWUtPnN1ZmZpeGVzICs9ICIsIjsKKyAgICAgICAgICAgICAgICAgICAgbWltZS5zdWZmaXhlcyAr
PSAiLCI7CiAKLSAgICAgICAgICAgICAgICBtaW1lLT5zdWZmaXhlcyArPSBleHRlbnNpb25zW2ld
OworICAgICAgICAgICAgICAgIG1pbWUuc3VmZml4ZXMgKz0gZXh0ZW5zaW9uc1tpXTsKICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW5mby5taW1lcy5hcHBlbmQobWlt
ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBtX3BsdWdpbnMuYXBwZW5kKGluZm8pOwpJbmRleDog
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCShyZXZpc2lvbiA2MDI0MikKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNS0yNiAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENsZWFuIHVwIE1pbWVDbGFzc0luZm8gYW5kIFBsdWdpbkluZm8K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NzAwCisK
KyAgICAgICAgVXBkYXRlIGZvciBXZWJDb3JlIGNoYW5nZXMuCisKKyAgICAgICAgKiBzcmMvV2Vi
UGx1Z2luTGlzdEJ1aWxkZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luTGlz
dEJ1aWxkZXJJbXBsOjphZGRQbHVnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5MaXN0
QnVpbGRlckltcGw6OmFkZE1lZGlhVHlwZVRvTGFzdFBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsdWdpbkxpc3RCdWlsZGVySW1wbDo6YWRkRmlsZUV4dGVuc2lvblRvTGFzdE1lZGlhVHlw
ZSk6CisgICAgICAgICogc3JjL1dlYlBsdWdpbkxpc3RCdWlsZGVySW1wbC5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJQbHVnaW5MaXN0QnVpbGRlckltcGw6OldlYlBsdWdpbkxpc3RCdWlsZGVySW1w
bCk6CisKIDIwMTAtMDUtMjYgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCBjaHJvbWl1bSBidWlsZCBmaXgKSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9zcmMvV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkxpc3RCdWlsZGVySW1wbC5jcHAJKHJldmlzaW9uIDYw
MTg2KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5MaXN0QnVpbGRlckltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MSwyNyArNDEsMjcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IHZvaWQgV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsOjphZGRQbHVnaW4oY29uc3QgV2ViU3RyaW5n
JiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBXZWJTdHJpbmcmIGZp
bGVOYW1lKQogewotICAgIFBsdWdpbkluZm8qIGluZm8gPSBuZXcgUGx1Z2luSW5mbygpOwotICAg
IGluZm8tPm5hbWUgPSBuYW1lOwotICAgIGluZm8tPmRlc2MgPSBkZXNjcmlwdGlvbjsKLSAgICBp
bmZvLT5maWxlID0gZmlsZU5hbWU7CisgICAgUGx1Z2luSW5mbyBpbmZvOworICAgIGluZm8ubmFt
ZSA9IG5hbWU7CisgICAgaW5mby5kZXNjID0gZGVzY3JpcHRpb247CisgICAgaW5mby5maWxlID0g
ZmlsZU5hbWU7CiAgICAgbV9yZXN1bHRzLT5hcHBlbmQoaW5mbyk7CiB9CiAKIHZvaWQgV2ViUGx1
Z2luTGlzdEJ1aWxkZXJJbXBsOjphZGRNZWRpYVR5cGVUb0xhc3RQbHVnaW4oY29uc3QgV2ViU3Ry
aW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRlc2NyaXB0aW9uKQogewotICAgIE1pbWVDbGFz
c0luZm8qIGluZm8gPSBuZXcgTWltZUNsYXNzSW5mbygpOwotICAgIGluZm8tPnR5cGUgPSBuYW1l
OwotICAgIGluZm8tPmRlc2MgPSBkZXNjcmlwdGlvbjsKLSAgICBtX3Jlc3VsdHMtPmxhc3QoKS0+
bWltZXMuYXBwZW5kKGluZm8pOworICAgIE1pbWVDbGFzc0luZm8gaW5mbzsKKyAgICBpbmZvLnR5
cGUgPSBuYW1lOworICAgIGluZm8uZGVzYyA9IGRlc2NyaXB0aW9uOworICAgIG1fcmVzdWx0cy0+
bGFzdCgpLm1pbWVzLmFwcGVuZChpbmZvKTsKIH0KIAogdm9pZCBXZWJQbHVnaW5MaXN0QnVpbGRl
ckltcGw6OmFkZEZpbGVFeHRlbnNpb25Ub0xhc3RNZWRpYVR5cGUoY29uc3QgV2ViU3RyaW5nJiBl
eHRlbnNpb24pCiB7Ci0gICAgTWltZUNsYXNzSW5mbyogaW5mbyA9IG1fcmVzdWx0cy0+bGFzdCgp
LT5taW1lcy5sYXN0KCk7Ci0gICAgaWYgKCFpbmZvLT5zdWZmaXhlcy5pc0VtcHR5KCkpCi0gICAg
ICAgIGluZm8tPnN1ZmZpeGVzLmFwcGVuZCgnLCcpOwotICAgIGluZm8tPnN1ZmZpeGVzLmFwcGVu
ZChleHRlbnNpb24pOworICAgIE1pbWVDbGFzc0luZm8mIGluZm8gPSBtX3Jlc3VsdHMtPmxhc3Qo
KS0+bWltZXMubGFzdCgpOworICAgIGlmICghaW5mby5zdWZmaXhlcy5pc0VtcHR5KCkpCisgICAg
ICAgIGluZm8uc3VmZml4ZXMuYXBwZW5kKCcsJyk7CisgICAgaW5mby5zdWZmaXhlcy5hcHBlbmQo
ZXh0ZW5zaW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlBsdWdpbkxpc3RCdWlsZGVySW1wbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsLmgJKHJldmlzaW9uIDYwMTg2
KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5MaXN0QnVpbGRlckltcGwuaAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
V2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsIDogcHVibGljIFdlYlBsdWdpbkxpc3RCdWlsZGVyIHsK
IHB1YmxpYzoKLSAgICBXZWJQbHVnaW5MaXN0QnVpbGRlckltcGwoVmVjdG9yPFdlYkNvcmU6OlBs
dWdpbkluZm8qPiogcmVzdWx0cykgOiBtX3Jlc3VsdHMocmVzdWx0cykgeyB9CisgICAgV2ViUGx1
Z2luTGlzdEJ1aWxkZXJJbXBsKFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiogcmVzdWx0cykg
OiBtX3Jlc3VsdHMocmVzdWx0cykgeyB9CiAKICAgICAvLyBXZWJQbHVnaW5MaXN0QnVpbGRlciBt
ZXRob2RzOgogICAgIHZpcnR1YWwgdm9pZCBhZGRQbHVnaW4oY29uc3QgV2ViU3RyaW5nJiBuYW1l
LCBjb25zdCBXZWJTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBXZWJTdHJpbmcmIGZpbGVOYW1l
KTsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhZGRGaWxlRXh0
ZW5zaW9uVG9MYXN0TWVkaWFUeXBlKGNvbnN0IFdlYlN0cmluZyYgZXh0ZW5zaW9uKTsKIAogcHJp
dmF0ZToKLSAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbyo+KiBtX3Jlc3VsdHM7CisgICAg
VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+KiBtX3Jlc3VsdHM7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57120</attachid>
            <date>2010-05-26 11:32:39 -0700</date>
            <delta_ts>2010-05-26 13:09:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39700-20100526113238.patch</filename>
            <type>text/plain</type>
            <size>36097</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDI0MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzMgQEAKKzIwMTAtMDUtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDbGVhbiB1cCBNaW1lQ2xhc3NJbmZvIGFuZCBQbHVnaW5JbmZvCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTcwMAorCisgICAgICAgIFRoaXMgZ2V0
cyByaWQgb2YgYWxsIHRoZSBoZWFwIGFsbG9jYXRpb24gZnJvbSBNaW1lQ2xhc3NJbmZvIGFuZCBQ
bHVnaW5JbmZvLiAKKyAgICAgICAgCisgICAgICAgIEl0IGFsc28gY2hhbmdlcyB0aGUgbV9wbHVn
aW5zIGFuZCBtX21pbWVzIHZlY3RvcnMgaW4gUGx1Z2luRGF0YSB0byBub3QgaG9sZCBoZWFwIGFs
bG9jYXRlZCBNaW1lQ2xhc3NJbmZvCisgICAgICAgIGFuZCBQbHVnaW5DbGFzc0luZm8gb2JqZWN0
cy4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpy
ZWZyZXNoUGx1Z2lucyk6CisgICAgICAgICogcGx1Z2lucy9NaW1lVHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNaW1lVHlwZTo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNaW1lVHlwZTo6
c3VmZml4ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWltZVR5cGU6OmRlc2NyaXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1pbWVUeXBlOjplbmFibGVkUGx1Z2luKToKKyAgICAgICAgKiBwbHVn
aW5zL01pbWVUeXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpNaW1lVHlwZTo6bWltZUNsYXNzSW5m
byk6CisgICAgICAgICogcGx1Z2lucy9NaW1lVHlwZUFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1pbWVUeXBlQXJyYXk6Oml0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6TWltZVR5cGVBcnJh
eTo6Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1pbWVUeXBlQXJyYXk6
Om5hbWVkSXRlbSk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbjo6ZmlsZW5hbWUp
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luOjpkZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW46Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW46Oml0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luOjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6UGx1Z2luOjpuYW1lZEl0ZW0pOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luLmg6
CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW46OnBsdWdpbkluZm8pOgorICAgICAgICAqIHBsdWdp
bnMvUGx1Z2luQXJyYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luQXJyYXk6Omxlbmd0
aCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5BcnJheTo6aXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5BcnJheTo6Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsdWdpbkFycmF5OjpuYW1lZEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luQXJyYXk6
OnBsdWdpbkRhdGEpOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luQXJyYXkuaDoKKyAgICAgICAg
KiBwbHVnaW5zL1BsdWdpbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YTo6
UGx1Z2luRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhOjp+UGx1Z2luRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhOjpzdXBwb3J0c01pbWVUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsdWdpbkRhdGE6OnBsdWdpbk5hbWVGb3JNaW1lVHlwZSk6CisgICAgICAg
ICogcGx1Z2lucy9QbHVnaW5EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToK
KyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5EYXRhOjpkaXNjb25uZWN0UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5E
YXRhOjpwYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGE6OnBsdWdpbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YTo6bWltZXMpOgorICAgICAgICAqIHBsdWdpbnMvY2hy
b21pdW0vUGx1Z2luRGF0YUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkNh
Y2hlOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5DYWNoZTo6cGx1Z2lucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhOjppbml0UGx1Z2lucyk6CisgICAgICAgIChXZWJD
b3JlOjpnZXRQbHVnaW5NaW1lVHlwZUZyb21FeHRlbnNpb24pOgorICAgICAgICAqIHBsdWdpbnMv
Z3RrL1BsdWdpbkRhdGFHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YTo6aW5p
dFBsdWdpbnMpOgorICAgICAgICAqIHBsdWdpbnMvbWFjL1BsdWdpbkRhdGFNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhOjppbml0UGx1Z2lucyk6CisgICAgICAgICogcGx1Z2lu
cy9xdC9QbHVnaW5EYXRhUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YTo6aW5p
dFBsdWdpbnMpOgorICAgICAgICAqIHBsdWdpbnMvd2luL1BsdWdpbkRhdGFXaW4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YTo6aW5pdFBsdWdpbnMpOgorICAgICAgICAqIHBsdWdp
bnMvd3gvUGx1Z2luRGF0YVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGE6Omlu
aXRQbHVnaW5zKToKKwogMjAxMC0wNS0yNiAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgV2luZG93cyArIGNsZWFu
IHVwIHRoZSBWaXN1YWwgU3R1ZGlvIHByb2plY3QuCkluZGV4OiBXZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiA2MDI0MikK
KysrIFdlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc3LDEzICszNzcs
MTcgQEAgdm9pZCBQYWdlOjpyZWZyZXNoUGx1Z2lucyhib29sIHJlbG9hZCkKIAogICAgIEhhc2hT
ZXQ8UGFnZSo+OjppdGVyYXRvciBlbmQgPSBhbGxQYWdlcy0+ZW5kKCk7CiAgICAgZm9yIChIYXNo
U2V0PFBhZ2UqPjo6aXRlcmF0b3IgaXQgPSBhbGxQYWdlcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7Ci0gICAgICAgICgqaXQpLT5tX3BsdWdpbkRhdGEgPSAwOworICAgICAgICBQYWdlKiBw
YWdlID0gKml0OworICAgICAgICAKKyAgICAgICAgLy8gQ2xlYXIgb3V0IHRoZSBwYWdlJ3MgcGx1
Zy1pbiBkYXRhLgorICAgICAgICBwYWdlLT5tX3BsdWdpbkRhdGEgPSAwOwogCi0gICAgICAgIGlm
IChyZWxvYWQpIHsKLSAgICAgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gKCppdCktPm1haW5G
cmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgewot
ICAgICAgICAgICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCktPmNvbnRhaW5zUGx1Z2lucygpKQot
ICAgICAgICAgICAgICAgICAgICBmcmFtZXNOZWVkaW5nUmVsb2FkLmFwcGVuZChmcmFtZSk7Ci0g
ICAgICAgICAgICB9CisgICAgICAgIGlmICghcmVsb2FkKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIAorICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICgqaXQpLT5tYWluRnJhbWUo
KTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICAg
ICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCktPmNvbnRhaW5zUGx1Z2lucygpKQorICAgICAgICAg
ICAgICAgIGZyYW1lc05lZWRpbmdSZWxvYWQuYXBwZW5kKGZyYW1lKTsKICAgICAgICAgfQogICAg
IH0KIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bUJyaWRnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1CcmlkZ2UuaAko
cmV2aXNpb24gNjAyNDIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtQnJp
ZGdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJMaW5rSGFz
aC5oIgogI2luY2x1ZGUgIlBhc3NSZWZQdHIuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkUHJpdmF0
ZS5oIgorI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKIAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IApAQCAtNjQsNyArNjUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgV2lkZ2V0
OwogCiAgICAgc3RydWN0IENvb2tpZTsKLSAgICBzdHJ1Y3QgUGx1Z2luSW5mbzsKICAgICBzdHJ1
Y3QgRm9udFJlbmRlclN0eWxlOwogCiAgICAgLy8gQW4gaW50ZXJmYWNlIHRvIHRoZSBlbWJlZGRp
bmcgbGF5ZXIsIHdoaWNoIGhhcyB0aGUgYWJpbGl0eSB0byBhbnN3ZXIKQEAgLTE3Niw3ICsxNzYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBTdHJpbmcgcHJlZmVycmVk
RXh0ZW5zaW9uRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICAgICAg
Ly8gUGx1Z2luIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLSAgICAgICAgc3RhdGljIGJvb2wgcGx1Z2lucyhib29sIHJlZnJlc2gs
IFZlY3RvcjxQbHVnaW5JbmZvKj4qKTsKKyAgICAgICAgc3RhdGljIGJvb2wgcGx1Z2lucyhib29s
IHJlZnJlc2gsIFZlY3RvcjxQbHVnaW5JbmZvPiopOwogICAgICAgICBzdGF0aWMgTlBPYmplY3Qq
IHBsdWdpblNjcmlwdGFibGVPYmplY3QoV2lkZ2V0Kik7CiAgICAgICAgIHN0YXRpYyBib29sIHBv
cHVwc0FsbG93ZWQoTlBQKTsKIApJbmRleDogV2ViQ29yZS9wbHVnaW5zL01pbWVUeXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMvTWltZVR5cGUuY3BwCShyZXZpc2lvbiA2MDI0
MikKKysrIFdlYkNvcmUvcGx1Z2lucy9NaW1lVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDE3ICs0MCwxNyBAQCBNaW1lVHlwZTo6fk1pbWVUeXBlKCkKIAogY29uc3QgU3RyaW5nICZNaW1l
VHlwZTo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGx1Z2luRGF0YS0+bWltZXMoKVtt
X2luZGV4XS0+dHlwZTsKKyAgICByZXR1cm4gbWltZUNsYXNzSW5mbygpLnR5cGU7CiB9CiAKIGNv
bnN0IFN0cmluZyAmTWltZVR5cGU6OnN1ZmZpeGVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9w
bHVnaW5EYXRhLT5taW1lcygpW21faW5kZXhdLT5zdWZmaXhlczsKKyAgICByZXR1cm4gbWltZUNs
YXNzSW5mbygpLnN1ZmZpeGVzOwogfQogCiBjb25zdCBTdHJpbmcgJk1pbWVUeXBlOjpkZXNjcmlw
dGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGx1Z2luRGF0YS0+bWltZXMoKVttX2luZGV4
XS0+ZGVzYzsKKyAgICByZXR1cm4gbWltZUNsYXNzSW5mbygpLmRlc2M7CiB9CiAKIFBhc3NSZWZQ
dHI8UGx1Z2luPiBNaW1lVHlwZTo6ZW5hYmxlZFBsdWdpbigpIGNvbnN0CkBAIC01OSwxMyArNTks
NyBAQCBQYXNzUmVmUHRyPFBsdWdpbj4gTWltZVR5cGU6OmVuYWJsZWRQbHVnCiAgICAgaWYgKCFw
IHx8ICFwLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPmFsbG93UGx1Z2lucyhOb3RBYm91dFRvSW5z
dGFudGlhdGVQbHVnaW4pKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGNvbnN0IFBsdWdpbklu
Zm8gKmluZm8gPSBtX3BsdWdpbkRhdGEtPm1pbWVzKClbbV9pbmRleF0tPnBsdWdpbjsKLSAgICBj
b25zdCBWZWN0b3I8UGx1Z2luSW5mbyo+JiBwbHVnaW5zID0gbV9wbHVnaW5EYXRhLT5wbHVnaW5z
KCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwbHVnaW5zLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGlmIChwbHVnaW5zW2ldID09IGluZm8pCi0gICAgICAgICAgICByZXR1cm4gUGx1Z2lu
OjpjcmVhdGUobV9wbHVnaW5EYXRhLmdldCgpLCBpKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIFBsdWdpbjo6Y3JlYXRlKG1fcGx1Z2luRGF0YS5nZXQoKSwgbWltZUNsYXNzSW5m
bygpLnBsdWdpbkluZGV4KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2Vi
Q29yZS9wbHVnaW5zL01pbWVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL01p
bWVUeXBlLmgJKHJldmlzaW9uIDYwMjQyKQorKysgV2ViQ29yZS9wbHVnaW5zL01pbWVUeXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBQYXNzUmVmUHRyPFBsdWdpbj4gZW5hYmxlZFBsdWdpbigpIGNvbnN0OwogCiAgICAgcHJp
dmF0ZToKKyAgICAgICAgY29uc3QgTWltZUNsYXNzSW5mbyYgbWltZUNsYXNzSW5mbygpIGNvbnN0
IHsgcmV0dXJuIG1fcGx1Z2luRGF0YS0+bWltZXMoKVttX2luZGV4XTsgfQorICAgICAgICAKICAg
ICAgICAgTWltZVR5cGUoUGFzc1JlZlB0cjxQbHVnaW5EYXRhPiwgdW5zaWduZWQgaW5kZXgpOwog
ICAgICAgICBSZWZQdHI8UGx1Z2luRGF0YT4gbV9wbHVnaW5EYXRhOwogICAgICAgICB1bnNpZ25l
ZCBtX2luZGV4OwpJbmRleDogV2ViQ29yZS9wbHVnaW5zL01pbWVUeXBlQXJyYXkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy9NaW1lVHlwZUFycmF5LmNwcAkocmV2aXNpb24gNjAy
NDIpCisrKyBXZWJDb3JlL3BsdWdpbnMvTWltZVR5cGVBcnJheS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUwLDcgKzUwLDcgQEAgUGFzc1JlZlB0cjxNaW1lVHlwZT4gTWltZVR5cGVBcnJheTo6aXRl
bQogICAgIFBsdWdpbkRhdGEqIGRhdGEgPSBnZXRQbHVnaW5EYXRhKCk7CiAgICAgaWYgKCFkYXRh
KQogICAgICAgICByZXR1cm4gMDsKLSAgICBjb25zdCBWZWN0b3I8TWltZUNsYXNzSW5mbyo+JiBt
aW1lcyA9IGRhdGEtPm1pbWVzKCk7CisgICAgY29uc3QgVmVjdG9yPE1pbWVDbGFzc0luZm8+JiBt
aW1lcyA9IGRhdGEtPm1pbWVzKCk7CiAgICAgaWYgKGluZGV4ID49IG1pbWVzLnNpemUoKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIE1pbWVUeXBlOjpjcmVhdGUoZGF0YSwgaW5kZXgp
LmdldCgpOwpAQCAtNjEsOSArNjEsOSBAQCBib29sIE1pbWVUeXBlQXJyYXk6OmNhbkdldEl0ZW1z
Rm9yTmFtZShjCiAgICAgUGx1Z2luRGF0YSAqZGF0YSA9IGdldFBsdWdpbkRhdGEoKTsKICAgICBp
ZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiAwOwotICAgIGNvbnN0IFZlY3RvcjxNaW1lQ2xhc3NJ
bmZvKj4mIG1pbWVzID0gZGF0YS0+bWltZXMoKTsKKyAgICBjb25zdCBWZWN0b3I8TWltZUNsYXNz
SW5mbz4mIG1pbWVzID0gZGF0YS0+bWltZXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbWltZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1pbWVzW2ldLT50eXBlID09IHBy
b3BlcnR5TmFtZSkKKyAgICAgICAgaWYgKG1pbWVzW2ldLnR5cGUgPT0gcHJvcGVydHlOYW1lKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTc0
LDkgKzc0LDkgQEAgUGFzc1JlZlB0cjxNaW1lVHlwZT4gTWltZVR5cGVBcnJheTo6bmFtZQogICAg
IFBsdWdpbkRhdGEgKmRhdGEgPSBnZXRQbHVnaW5EYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAg
ICAgICByZXR1cm4gMDsKLSAgICBjb25zdCBWZWN0b3I8TWltZUNsYXNzSW5mbyo+JiBtaW1lcyA9
IGRhdGEtPm1pbWVzKCk7CisgICAgY29uc3QgVmVjdG9yPE1pbWVDbGFzc0luZm8+JiBtaW1lcyA9
IGRhdGEtPm1pbWVzKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1pbWVzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIGlmIChtaW1lc1tpXS0+dHlwZSA9PSBwcm9wZXJ0eU5hbWUpCisg
ICAgICAgIGlmIChtaW1lc1tpXS50eXBlID09IHByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIHJl
dHVybiBNaW1lVHlwZTo6Y3JlYXRlKGRhdGEsIGkpLmdldCgpOwogICAgIH0KICAgICByZXR1cm4g
MDsKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9QbHVnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGx1Z2lucy9QbHVnaW4uY3BwCShyZXZpc2lvbiA2MDI0MikKKysrIFdlYkNvcmUvcGx1Z2lu
cy9QbHVnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw1MyArMzcsNTMgQEAgUGx1Z2luOjp+
UGx1Z2luKCkKIAogU3RyaW5nIFBsdWdpbjo6bmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
cGx1Z2luRGF0YS0+cGx1Z2lucygpW21faW5kZXhdLT5uYW1lOworICAgIHJldHVybiBwbHVnaW5J
bmZvKCkubmFtZTsKIH0KIAogU3RyaW5nIFBsdWdpbjo6ZmlsZW5hbWUoKSBjb25zdAogewotICAg
IHJldHVybiBtX3BsdWdpbkRhdGEtPnBsdWdpbnMoKVttX2luZGV4XS0+ZmlsZTsKKyAgICByZXR1
cm4gcGx1Z2luSW5mbygpLmZpbGU7CiB9CiAKIFN0cmluZyBQbHVnaW46OmRlc2NyaXB0aW9uKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9wbHVnaW5EYXRhLT5wbHVnaW5zKClbbV9pbmRleF0tPmRl
c2M7CisgICAgcmV0dXJuIHBsdWdpbkluZm8oKS5kZXNjOwogfQogCiB1bnNpZ25lZCBQbHVnaW46
Omxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGx1Z2luRGF0YS0+cGx1Z2lucygpW21f
aW5kZXhdLT5taW1lcy5zaXplKCk7CisgICAgcmV0dXJuIHBsdWdpbkluZm8oKS5taW1lcy5zaXpl
KCk7CiB9CiAKIFBhc3NSZWZQdHI8TWltZVR5cGU+IFBsdWdpbjo6aXRlbSh1bnNpZ25lZCBpbmRl
eCkKIHsKLSAgICBjb25zdCBWZWN0b3I8UGx1Z2luSW5mbyo+JiBwbHVnaW5zID0gbV9wbHVnaW5E
YXRhLT5wbHVnaW5zKCk7Ci0gICAgaWYgKGluZGV4ID49IHBsdWdpbnNbbV9pbmRleF0tPm1pbWVz
LnNpemUoKSkKKyAgICBpZiAoaW5kZXggPj0gcGx1Z2luSW5mbygpLm1pbWVzLnNpemUoKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBNaW1lQ2xhc3NJbmZvKiBtaW1lID0gcGx1Z2luc1ttX2lu
ZGV4XS0+bWltZXNbaW5kZXhdOworICAgIGNvbnN0IE1pbWVDbGFzc0luZm8mIG1pbWUgPSBwbHVn
aW5JbmZvKCkubWltZXNbaW5kZXhdOwogCi0gICAgY29uc3QgVmVjdG9yPE1pbWVDbGFzc0luZm8q
PiYgbWltZXMgPSBtX3BsdWdpbkRhdGEtPm1pbWVzKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1pbWVzLnNpemUoKTsgKytpKQorICAgIGNvbnN0IFZlY3RvcjxNaW1lQ2xhc3NJbmZv
PiYgbWltZXMgPSBtX3BsdWdpbkRhdGEtPm1pbWVzKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1pbWVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChtaW1lc1tpXSA9PSBtaW1l
KQogICAgICAgICAgICAgcmV0dXJuIE1pbWVUeXBlOjpjcmVhdGUobV9wbHVnaW5EYXRhLmdldCgp
LCBpKS5nZXQoKTsKKyAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKIGJvb2wgUGx1Z2luOjpjYW5H
ZXRJdGVtc0Zvck5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAg
Y29uc3QgVmVjdG9yPE1pbWVDbGFzc0luZm8qPiYgbWltZXMgPSBtX3BsdWdpbkRhdGEtPm1pbWVz
KCk7CisgICAgY29uc3QgVmVjdG9yPE1pbWVDbGFzc0luZm8+JiBtaW1lcyA9IG1fcGx1Z2luRGF0
YS0+bWltZXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWltZXMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIGlmIChtaW1lc1tpXS0+dHlwZSA9PSBwcm9wZXJ0eU5hbWUpCisgICAgICAg
IGlmIChtaW1lc1tpXS50eXBlID09IHByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogUGFzc1JlZlB0cjxNaW1lVHlwZT4gUGx1Z2lu
OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgY29u
c3QgVmVjdG9yPE1pbWVDbGFzc0luZm8qPiYgbWltZXMgPSBtX3BsdWdpbkRhdGEtPm1pbWVzKCk7
CisgICAgY29uc3QgVmVjdG9yPE1pbWVDbGFzc0luZm8+JiBtaW1lcyA9IG1fcGx1Z2luRGF0YS0+
bWltZXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWltZXMuc2l6ZSgpOyArK2kp
Ci0gICAgICAgIGlmIChtaW1lc1tpXS0+dHlwZSA9PSBwcm9wZXJ0eU5hbWUpCisgICAgICAgIGlm
IChtaW1lc1tpXS50eXBlID09IHByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIHJldHVybiBNaW1l
VHlwZTo6Y3JlYXRlKG1fcGx1Z2luRGF0YS5nZXQoKSwgaSkuZ2V0KCk7CiAgICAgcmV0dXJuIDA7
CiB9CkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpbi5oCShyZXZpc2lvbiA2MDI0MikKKysrIFdlYkNvcmUvcGx1Z2lucy9Q
bHVnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIFBhc3NSZWZQdHI8TWltZVR5cGU+IG5hbWVkSXRlbShjb25zdCBBdG9taWNT
dHJpbmcmIHByb3BlcnR5TmFtZSk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBjb25zdCBQbHVn
aW5JbmZvJiBwbHVnaW5JbmZvKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5EYXRhLT5wbHVnaW5z
KClbbV9pbmRleF07IH0KKwogICAgICAgICBQbHVnaW4oUGx1Z2luRGF0YSosIHVuc2lnbmVkIGlu
ZGV4KTsKICAgICAgICAgUmVmUHRyPFBsdWdpbkRhdGE+IG1fcGx1Z2luRGF0YTsKICAgICAgICAg
dW5zaWduZWQgbV9pbmRleDsKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5BcnJheS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkFycmF5LmNwcAkocmV2aXNpb24g
NjAyNDIpCisrKyBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw3ICszOSw3IEBAIFBsdWdpbkFycmF5Ojp+UGx1Z2luQXJyYXkoKQogCiB1bnNpZ25l
ZCBQbHVnaW5BcnJheTo6bGVuZ3RoKCkgY29uc3QKIHsKLSAgICBQbHVnaW5EYXRhKiBkYXRhID0g
Z2V0UGx1Z2luRGF0YSgpOworICAgIFBsdWdpbkRhdGEqIGRhdGEgPSBwbHVnaW5EYXRhKCk7CiAg
ICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gZGF0YS0+cGx1Z2lu
cygpLnNpemUoKTsKQEAgLTQ3LDEwICs0NywxMCBAQCB1bnNpZ25lZCBQbHVnaW5BcnJheTo6bGVu
Z3RoKCkgY29uc3QKIAogUGFzc1JlZlB0cjxQbHVnaW4+IFBsdWdpbkFycmF5OjppdGVtKHVuc2ln
bmVkIGluZGV4KQogewotICAgIFBsdWdpbkRhdGEqIGRhdGEgPSBnZXRQbHVnaW5EYXRhKCk7Cisg
ICAgUGx1Z2luRGF0YSogZGF0YSA9IHBsdWdpbkRhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAg
ICAgIHJldHVybiAwOwotICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZvKj4mIHBsdWdpbnMgPSBk
YXRhLT5wbHVnaW5zKCk7CisgICAgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8+JiBwbHVnaW5zID0g
ZGF0YS0+cGx1Z2lucygpOwogICAgIGlmIChpbmRleCA+PSBwbHVnaW5zLnNpemUoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIFBsdWdpbjo6Y3JlYXRlKGRhdGEsIGluZGV4KS5nZXQo
KTsKQEAgLTU4LDEyICs1OCwxMiBAQCBQYXNzUmVmUHRyPFBsdWdpbj4gUGx1Z2luQXJyYXk6Oml0
ZW0odW5zCiAKIGJvb2wgUGx1Z2luQXJyYXk6OmNhbkdldEl0ZW1zRm9yTmFtZShjb25zdCBBdG9t
aWNTdHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKLSAgICBQbHVnaW5EYXRhKiBkYXRhID0gZ2V0UGx1
Z2luRGF0YSgpOworICAgIFBsdWdpbkRhdGEqIGRhdGEgPSBwbHVnaW5EYXRhKCk7CiAgICAgaWYg
KCFkYXRhKQogICAgICAgICByZXR1cm4gMDsKLSAgICBjb25zdCBWZWN0b3I8UGx1Z2luSW5mbyo+
JiBwbHVnaW5zID0gZGF0YS0+cGx1Z2lucygpOworICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZv
PiYgcGx1Z2lucyA9IGRhdGEtPnBsdWdpbnMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcGx1Z2lucy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAocGx1Z2luc1tpXS0+bmFtZSA9
PSBwcm9wZXJ0eU5hbWUpCisgICAgICAgIGlmIChwbHVnaW5zW2ldLm5hbWUgPT0gcHJvcGVydHlO
YW1lKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsK
QEAgLTcxLDEyICs3MSwxMiBAQCBib29sIFBsdWdpbkFycmF5OjpjYW5HZXRJdGVtc0Zvck5hbWUo
Y29uCiAKIFBhc3NSZWZQdHI8UGx1Z2luPiBQbHVnaW5BcnJheTo6bmFtZWRJdGVtKGNvbnN0IEF0
b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKQogewotICAgIFBsdWdpbkRhdGEqIGRhdGEgPSBnZXRQ
bHVnaW5EYXRhKCk7CisgICAgUGx1Z2luRGF0YSogZGF0YSA9IHBsdWdpbkRhdGEoKTsKICAgICBp
ZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiAwOwotICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZv
Kj4mIHBsdWdpbnMgPSBkYXRhLT5wbHVnaW5zKCk7CisgICAgY29uc3QgVmVjdG9yPFBsdWdpbklu
Zm8+JiBwbHVnaW5zID0gZGF0YS0+cGx1Z2lucygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBwbHVnaW5zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChwbHVnaW5zW2ldLT5uYW1l
ID09IHByb3BlcnR5TmFtZSkKKyAgICAgICAgaWYgKHBsdWdpbnNbaV0ubmFtZSA9PSBwcm9wZXJ0
eU5hbWUpCiAgICAgICAgICAgICByZXR1cm4gUGx1Z2luOjpjcmVhdGUoZGF0YSwgaSkuZ2V0KCk7
CiAgICAgfQogICAgIHJldHVybiAwOwpAQCAtODcsMTQgKzg3LDE0IEBAIHZvaWQgUGx1Z2luQXJy
YXk6OnJlZnJlc2goYm9vbCByZWxvYWQpCiAgICAgUGFnZTo6cmVmcmVzaFBsdWdpbnMocmVsb2Fk
KTsKIH0KIAotUGx1Z2luRGF0YSogUGx1Z2luQXJyYXk6OmdldFBsdWdpbkRhdGEoKSBjb25zdAor
UGx1Z2luRGF0YSogUGx1Z2luQXJyYXk6OnBsdWdpbkRhdGEoKSBjb25zdAogewogICAgIGlmICgh
bV9mcmFtZSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgUGFnZSogcCA9IG1fZnJhbWUtPnBhZ2Uo
KTsKLSAgICBpZiAoIXApCisgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBp
ZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBwLT5wbHVnaW5EYXRhKCk7
CisgICAgcmV0dXJuIHBhZ2UtPnBsdWdpbkRhdGEoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkFycmF5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbHVnaW5zL1BsdWdpbkFycmF5LmgJKHJldmlzaW9uIDYwMjQyKQorKysgV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpbkFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUGx1Z2luQXJyYXko
RnJhbWUqKTsKLSAgICAgICAgUGx1Z2luRGF0YSogZ2V0UGx1Z2luRGF0YSgpIGNvbnN0OworICAg
ICAgICBQbHVnaW5EYXRhKiBwbHVnaW5EYXRhKCkgY29uc3Q7CiAKICAgICAgICAgRnJhbWUqIG1f
ZnJhbWU7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5jcHAJKHJldmlzaW9uIDYwMjQy
KQorKysgV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MiwzMSArMzIsMzMgQEAgUGx1Z2luRGF0YTo6UGx1Z2luRGF0YShjb25zdCBQYWdlKiBwYWdlKQog
ICAgIGluaXRQbHVnaW5zKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wbHVn
aW5zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFBsdWdpbkluZm8qIHBsdWdpbiA9IG1f
cGx1Z2luc1tpXTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHBsdWdpbi0+bWlt
ZXMuc2l6ZSgpOyArK2opCi0gICAgICAgICAgICBtX21pbWVzLmFwcGVuZChwbHVnaW4tPm1pbWVz
W2pdKTsKKyAgICAgICAgY29uc3QgUGx1Z2luSW5mbyYgcGx1Z2luID0gbV9wbHVnaW5zW2ldOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgcGx1Z2luLm1pbWVzLnNpemUoKTsgKytq
KQorICAgICAgICAgICAgbV9taW1lcy5hcHBlbmQocGx1Z2luLm1pbWVzW2pdKTsKICAgICB9CiB9
CiAKIFBsdWdpbkRhdGE6On5QbHVnaW5EYXRhKCkKIHsKLSAgICBkZWxldGVBbGxWYWx1ZXMobV9w
bHVnaW5zKTsKLSAgICBkZWxldGVBbGxWYWx1ZXMobV9taW1lcyk7CiB9CiAKIGJvb2wgUGx1Z2lu
RGF0YTo6c3VwcG9ydHNNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAogewog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbWVzLnNpemUoKTsgKytpKQotICAgICAg
ICBpZiAobV9taW1lc1tpXS0+dHlwZSA9PSBtaW1lVHlwZSkKKyAgICAgICAgaWYgKG1fbWltZXNb
aV0udHlwZSA9PSBtaW1lVHlwZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAogU3RyaW5nIFBsdWdpbkRhdGE6OnBsdWdpbk5hbWVGb3JNaW1lVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAogewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX21pbWVzLnNpemUoKTsgKytpKQotICAgICAgICBpZiAobV9taW1lc1tpXS0+dHlwZSA9
PSBtaW1lVHlwZSkKLSAgICAgICAgICAgIHJldHVybiBtX21pbWVzW2ldLT5wbHVnaW4tPm5hbWU7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWltZXMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgY29uc3QgTWltZUNsYXNzSW5mbyYgaW5mbyA9IG1fbWltZXNbaV07CisgICAgCisgICAg
ICAgIGlmIChpbmZvLnR5cGUgPT0gbWltZVR5cGUpCisgICAgICAgICAgICByZXR1cm4gbV9wbHVn
aW5zW2luZm8ucGx1Z2luSW5kZXhdLm5hbWU7CisgICAgfQorCiAgICAgcmV0dXJuIFN0cmluZygp
OwogfQogCkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgJKHJldmlzaW9uIDYwMjQyKQorKysgV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNDggKzI2LDUzIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFBhZ2U7Ci0gICAgc3RydWN0IFBs
dWdpbkluZm87CitjbGFzcyBQYWdlOworc3RydWN0IFBsdWdpbkluZm87CiAKLSAgICBzdHJ1Y3Qg
TWltZUNsYXNzSW5mbyA6IE5vbmNvcHlhYmxlIHsKLSAgICAgICAgU3RyaW5nIHR5cGU7Ci0gICAg
ICAgIFN0cmluZyBkZXNjOwotICAgICAgICBTdHJpbmcgc3VmZml4ZXM7Ci0gICAgICAgIFBsdWdp
bkluZm8qIHBsdWdpbjsKLSAgICB9OwotCi0gICAgc3RydWN0IFBsdWdpbkluZm8gOiBOb25jb3B5
YWJsZSB7Ci0gICAgICAgIFN0cmluZyBuYW1lOwotICAgICAgICBTdHJpbmcgZmlsZTsKLSAgICAg
ICAgU3RyaW5nIGRlc2M7Ci0gICAgICAgIFZlY3RvcjxNaW1lQ2xhc3NJbmZvKj4gbWltZXM7Ci0g
ICAgfTsKLQotICAgIC8vIEZJWE1FOiBtZXJnZSB3aXRoIFBsdWdpbkRhdGFiYXNlIGluIHRoZSBm
dXR1cmUKLSAgICBjbGFzcyBQbHVnaW5EYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8UGx1Z2luRGF0
YT4gewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luRGF0YT4g
Y3JlYXRlKGNvbnN0IFBhZ2UqIHBhZ2UpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVnaW5EYXRh
KHBhZ2UpKTsgfQotICAgICAgICB+UGx1Z2luRGF0YSgpOwotCi0gICAgICAgIHZvaWQgZGlzY29u
bmVjdFBhZ2UoKSB7IG1fcGFnZSA9IDA7IH0KLSAgICAgICAgY29uc3QgUGFnZSogcGFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFnZTsgfQotCi0gICAgICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZv
Kj4mIHBsdWdpbnMoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbnM7IH0KLSAgICAgICAgY29uc3Qg
VmVjdG9yPE1pbWVDbGFzc0luZm8qPiYgbWltZXMoKSBjb25zdCB7IHJldHVybiBtX21pbWVzOyB9
Ci0KLSAgICAgICAgYm9vbCBzdXBwb3J0c01pbWVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
IGNvbnN0OwotICAgICAgICBTdHJpbmcgcGx1Z2luTmFtZUZvck1pbWVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpIGNvbnN0OwotCi0gICAgICAgIHN0YXRpYyB2b2lkIHJlZnJlc2goKTsKLQot
ICAgIHByaXZhdGU6Ci0gICAgICAgIFBsdWdpbkRhdGEoY29uc3QgUGFnZSopOwotICAgICAgICB2
b2lkIGluaXRQbHVnaW5zKCk7Ci0KLSAgICAgICAgVmVjdG9yPFBsdWdpbkluZm8qPiBtX3BsdWdp
bnM7Ci0gICAgICAgIFZlY3RvcjxNaW1lQ2xhc3NJbmZvKj4gbV9taW1lczsKLSAgICAgICAgY29u
c3QgUGFnZSogbV9wYWdlOwotICAgIH07CitzdHJ1Y3QgTWltZUNsYXNzSW5mbyB7CisgICAgU3Ry
aW5nIHR5cGU7CisgICAgU3RyaW5nIGRlc2M7CisgICAgU3RyaW5nIHN1ZmZpeGVzOworICAgIHVu
c2lnbmVkIHBsdWdpbkluZGV4OworfTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBN
aW1lQ2xhc3NJbmZvJiBhLCBjb25zdCBNaW1lQ2xhc3NJbmZvJiBiKQoreworICAgIHJldHVybiBh
LnR5cGUgPT0gYi50eXBlICYmIGEuZGVzYyA9PSBiLmRlc2MgJiYgYS5zdWZmaXhlcyA9PSBiLnN1
ZmZpeGVzICYmIGEucGx1Z2luSW5kZXggPT0gYi5wbHVnaW5JbmRleDsKK30KKworc3RydWN0IFBs
dWdpbkluZm8geworICAgIFN0cmluZyBuYW1lOworICAgIFN0cmluZyBmaWxlOworICAgIFN0cmlu
ZyBkZXNjOworICAgIFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiBtaW1lczsKK307CisKKy8vIEZJWE1F
OiBtZXJnZSB3aXRoIFBsdWdpbkRhdGFiYXNlIGluIHRoZSBmdXR1cmUKK2NsYXNzIFBsdWdpbkRh
dGEgOiBwdWJsaWMgUmVmQ291bnRlZDxQbHVnaW5EYXRhPiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8UGx1Z2luRGF0YT4gY3JlYXRlKGNvbnN0IFBhZ2UqIHBhZ2UpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBQbHVnaW5EYXRhKHBhZ2UpKTsgfQorICAgIH5QbHVnaW5EYXRhKCk7CisK
KyAgICB2b2lkIGRpc2Nvbm5lY3RQYWdlKCkgeyBtX3BhZ2UgPSAwOyB9CisgICAgY29uc3QgUGFn
ZSogcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQorCisgICAgY29uc3QgVmVjdG9yPFBs
dWdpbkluZm8+JiBwbHVnaW5zKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5zOyB9CisgICAgY29u
c3QgVmVjdG9yPE1pbWVDbGFzc0luZm8+JiBtaW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fbWltZXM7
IH0KKworICAgIGJvb2wgc3VwcG9ydHNNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBj
b25zdDsKKyAgICBTdHJpbmcgcGx1Z2luTmFtZUZvck1pbWVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpIGNvbnN0OworCisgICAgc3RhdGljIHZvaWQgcmVmcmVzaCgpOworCitwcml2YXRlOgor
ICAgIFBsdWdpbkRhdGEoY29uc3QgUGFnZSopOworICAgIHZvaWQgaW5pdFBsdWdpbnMoKTsKKwor
ICAgIFZlY3RvcjxQbHVnaW5JbmZvPiBtX3BsdWdpbnM7CisgICAgVmVjdG9yPE1pbWVDbGFzc0lu
Zm8+IG1fbWltZXM7CisgICAgY29uc3QgUGFnZSogbV9wYWdlOworfTsKIAogfQogCkluZGV4OiBX
ZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vUGx1Z2luRGF0YUNocm9taXVtLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vUGx1Z2luRGF0YUNocm9taXVtLmNwcAkocmV2
aXNpb24gNjAyNDIpCisrKyBXZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vUGx1Z2luRGF0YUNocm9t
aXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMjMgKzM1LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1zdGF0aWMgUGx1Z2luSW5mbyogY2xvbmUoY29uc3QgUGx1Z2luSW5mbyogaW5m
bykKLXsKLSAgICBQbHVnaW5JbmZvKiByZXN1bHQgPSBuZXcgUGx1Z2luSW5mbygpOwotICAgIHJl
c3VsdC0+bmFtZSA9IGluZm8tPm5hbWU7Ci0gICAgcmVzdWx0LT5kZXNjID0gaW5mby0+ZGVzYzsK
LSAgICByZXN1bHQtPmZpbGUgPSBpbmZvLT5maWxlOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgaW5mby0+bWltZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgTWltZUNsYXNzSW5mbyogbWlt
ZSA9IG5ldyBNaW1lQ2xhc3NJbmZvKCk7Ci0gICAgICAgIG1pbWUtPnR5cGUgPSBpbmZvLT5taW1l
c1tpXS0+dHlwZTsKLSAgICAgICAgbWltZS0+ZGVzYyA9IGluZm8tPm1pbWVzW2ldLT5kZXNjOwot
ICAgICAgICBtaW1lLT5zdWZmaXhlcyA9IGluZm8tPm1pbWVzW2ldLT5zdWZmaXhlczsKLSAgICAg
ICAgbWltZS0+cGx1Z2luID0gcmVzdWx0OwotICAgICAgICByZXN1bHQtPm1pbWVzLmFwcGVuZCht
aW1lKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogY2xhc3MgUGx1Z2luQ2FjaGUg
ewogcHVibGljOgogICAgIFBsdWdpbkNhY2hlKCkgOiBtX2xvYWRlZChmYWxzZSksIG1fcmVmcmVz
aChmYWxzZSkge30KQEAgLTU5LDE1ICs0MiwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc2V0
KGJvb2wgcmVmcmVzaCkKICAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9w
bHVnaW5zLnNpemUoKTsgKytpKQotICAgICAgICAgICAgZGVsZXRlQWxsVmFsdWVzKG1fcGx1Z2lu
c1tpXS0+bWltZXMpOwotICAgICAgICBkZWxldGVBbGxWYWx1ZXMobV9wbHVnaW5zKTsKICAgICAg
ICAgbV9wbHVnaW5zLmNsZWFyKCk7CiAgICAgICAgIG1fbG9hZGVkID0gZmFsc2U7CiAgICAgICAg
IG1fcmVmcmVzaCA9IHJlZnJlc2g7CiAgICAgfQogCi0gICAgY29uc3QgVmVjdG9yPFBsdWdpbklu
Zm8qPiYgcGx1Z2lucygpCisgICAgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8+JiBwbHVnaW5zKCkK
ICAgICB7CiAgICAgICAgIGlmICghbV9sb2FkZWQpIHsKICAgICAgICAgICAgIENocm9taXVtQnJp
ZGdlOjpwbHVnaW5zKG1fcmVmcmVzaCwgJm1fcGx1Z2lucyk7CkBAIC03OCw3ICs1OCw3IEBAIHB1
YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgVmVjdG9yPFBsdWdpbkluZm8qPiBtX3BsdWdp
bnM7CisgICAgVmVjdG9yPFBsdWdpbkluZm8+IG1fcGx1Z2luczsKICAgICBib29sIG1fbG9hZGVk
OwogICAgIGJvb2wgbV9yZWZyZXNoOwogfTsKQEAgLTg3LDkgKzY3LDkgQEAgc3RhdGljIFBsdWdp
bkNhY2hlIHBsdWdpbkNhY2hlOwogCiB2b2lkIFBsdWdpbkRhdGE6OmluaXRQbHVnaW5zKCkKIHsK
LSAgICBjb25zdCBWZWN0b3I8UGx1Z2luSW5mbyo+JiBwbHVnaW5zID0gcGx1Z2luQ2FjaGUucGx1
Z2lucygpOworICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZvPiYgcGx1Z2lucyA9IHBsdWdpbkNh
Y2hlLnBsdWdpbnMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6ZSgp
OyArK2kpCi0gICAgICAgIG1fcGx1Z2lucy5hcHBlbmQoY2xvbmUocGx1Z2luc1tpXSkpOworICAg
ICAgICBtX3BsdWdpbnMuYXBwZW5kKHBsdWdpbnNbaV0pOwogfQogCiB2b2lkIFBsdWdpbkRhdGE6
OnJlZnJlc2goKQpAQCAtMTAwLDE1ICs4MCwxNSBAQCB2b2lkIFBsdWdpbkRhdGE6OnJlZnJlc2go
KQogCiBTdHJpbmcgZ2V0UGx1Z2luTWltZVR5cGVGcm9tRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
ZXh0ZW5zaW9uKQogewotICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZvKj4mIHBsdWdpbnMgPSBw
bHVnaW5DYWNoZS5wbHVnaW5zKCk7CisgICAgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8+JiBwbHVn
aW5zID0gcGx1Z2luQ2FjaGUucGx1Z2lucygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cGx1Z2lucy5zaXplKCk7ICsraSkgewotICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHBs
dWdpbnNbaV0tPm1pbWVzLnNpemUoKTsgKytqKSB7Ci0gICAgICAgICAgICBNaW1lQ2xhc3NJbmZv
KiBtaW1lID0gcGx1Z2luc1tpXS0+bWltZXNbal07CisgICAgICAgIGZvciAoc2l6ZV90IGogPSAw
OyBqIDwgcGx1Z2luc1tpXS5taW1lcy5zaXplKCk7ICsraikgeworICAgICAgICAgICAgY29uc3Qg
TWltZUNsYXNzSW5mbyYgbWltZSA9IHBsdWdpbnNbaV0ubWltZXNbal07CiAgICAgICAgICAgICBW
ZWN0b3I8U3RyaW5nPiBleHRlbnNpb25zOwotICAgICAgICAgICAgbWltZS0+c3VmZml4ZXMuc3Bs
aXQoIiwiLCBleHRlbnNpb25zKTsKKyAgICAgICAgICAgIG1pbWUuc3VmZml4ZXMuc3BsaXQoIiwi
LCBleHRlbnNpb25zKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgZXh0ZW5z
aW9ucy5zaXplKCk7ICsraykgewogICAgICAgICAgICAgICAgIGlmIChleHRlbnNpb24gPT0gZXh0
ZW5zaW9uc1trXSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1pbWUtPnR5cGU7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBtaW1lLnR5cGU7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpbkRhdGFHdGsuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luRGF0YUd0ay5jcHAJKHJldmlz
aW9uIDYwMjQyKQorKysgV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5EYXRhR3RrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsMzAgKzMzLDMwIEBAIHZvaWQgUGx1Z2luRGF0YTo6aW5pdFBsdWdp
bnMoKQogICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5QYWNrYWdlKj4gJnBsdWdpbnMgPSBkYi0+cGx1
Z2lucygpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwbHVnaW5zLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIFBsdWdpbkluZm8qIGluZm8gPSBuZXcgUGx1Z2luSW5mbzsKKyAg
ICAgICAgUGx1Z2luSW5mbyBpbmZvOwogICAgICAgICBQbHVnaW5QYWNrYWdlKiBwYWNrYWdlID0g
cGx1Z2luc1tpXTsKIAotICAgICAgICBpbmZvLT5uYW1lID0gcGFja2FnZS0+bmFtZSgpOwotICAg
ICAgICBpbmZvLT5maWxlID0gcGFja2FnZS0+ZmlsZU5hbWUoKTsKLSAgICAgICAgaW5mby0+ZGVz
YyA9IHBhY2thZ2UtPmRlc2NyaXB0aW9uKCk7CisgICAgICAgIGluZm8ubmFtZSA9IHBhY2thZ2Ut
Pm5hbWUoKTsKKyAgICAgICAgaW5mby5maWxlID0gcGFja2FnZS0+ZmlsZU5hbWUoKTsKKyAgICAg
ICAgaW5mby5kZXNjID0gcGFja2FnZS0+ZGVzY3JpcHRpb24oKTsKIAogICAgICAgICBjb25zdCBN
SU1FVG9EZXNjcmlwdGlvbnNNYXAmIG1pbWVUb0Rlc2NyaXB0aW9ucyA9IHBhY2thZ2UtPm1pbWVU
b0Rlc2NyaXB0aW9ucygpOwogICAgICAgICBNSU1FVG9EZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5lbmQoKTsKICAgICAgICAgZm9yIChNSU1F
VG9EZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWltZVRvRGVzY3JpcHRpb25z
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgTWltZUNsYXNzSW5mbyog
bWltZSA9IG5ldyBNaW1lQ2xhc3NJbmZvOwotICAgICAgICAgICAgaW5mby0+bWltZXMuYXBwZW5k
KG1pbWUpOworICAgICAgICAgICAgTWltZUNsYXNzSW5mbyBtaW1lOwogCi0gICAgICAgICAgICBt
aW1lLT50eXBlID0gaXQtPmZpcnN0OwotICAgICAgICAgICAgbWltZS0+ZGVzYyA9IGl0LT5zZWNv
bmQ7Ci0gICAgICAgICAgICBtaW1lLT5wbHVnaW4gPSBpbmZvOworICAgICAgICAgICAgbWltZS50
eXBlID0gaXQtPmZpcnN0OworICAgICAgICAgICAgbWltZS5kZXNjID0gaXQtPnNlY29uZDsKKyAg
ICAgICAgICAgIG1pbWUucGx1Z2luSW5kZXggPSBtX3BsdWdpbnMuc2l6ZSgpOworICAgICAgICAg
ICAgaW5mby5taW1lcy5hcHBlbmQobWltZSk7CiAKLSAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+
IGV4dGVuc2lvbnMgPSBwYWNrYWdlLT5taW1lVG9FeHRlbnNpb25zKCkuZ2V0KG1pbWUtPnR5cGUp
OworICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9ucyA9IHBhY2thZ2UtPm1pbWVU
b0V4dGVuc2lvbnMoKS5nZXQobWltZS50eXBlKTsKIAogICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGV4dGVuc2lvbnMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICBp
ZiAoaSA+IDApCi0gICAgICAgICAgICAgICAgICAgIG1pbWUtPnN1ZmZpeGVzICs9ICIsIjsKKyAg
ICAgICAgICAgICAgICAgICAgbWltZS5zdWZmaXhlcyArPSAiLCI7CiAKLSAgICAgICAgICAgICAg
ICBtaW1lLT5zdWZmaXhlcyArPSBleHRlbnNpb25zW2ldOworICAgICAgICAgICAgICAgIG1pbWUu
c3VmZml4ZXMgKz0gZXh0ZW5zaW9uc1tpXTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCklu
ZGV4OiBXZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpbkRhdGFNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbHVnaW5zL21hYy9QbHVnaW5EYXRhTWFjLm1tCShyZXZpc2lvbiA2MDI0MikKKysr
IFdlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luRGF0YU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzksMjIgKzM5LDI0IEBAIHZvaWQgUGx1Z2luRGF0YTo6aW5pdFBsdWdpbnMoKQogCiAgICAgTlNB
cnJheSogcGx1Z2lucyA9IFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIHBsdWdp
bnNJbmZvXTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IFtwbHVnaW5zIGNvdW50
XTsgKytpKSB7Ci0gICAgICAgIFBsdWdpbkluZm8qIHBsdWdpbkluZm8gPSBuZXcgUGx1Z2luSW5m
bzsKKyAgICAgICAgUGx1Z2luSW5mbyBwbHVnaW5JbmZvOwogCiAgICAgICAgIGlkIDxXZWJDb3Jl
UGx1Z2luSW5mbz4gcGx1Z2luID0gW3BsdWdpbnMgb2JqZWN0QXRJbmRleDppXTsKICAgICAKLSAg
ICAgICAgcGx1Z2luSW5mby0+bmFtZSA9IFtwbHVnaW4gbmFtZV07Ci0gICAgICAgIHBsdWdpbklu
Zm8tPmZpbGUgPSBbcGx1Z2luIGZpbGVuYW1lXTsKLSAgICAgICAgcGx1Z2luSW5mby0+ZGVzYyA9
IFtwbHVnaW4gcGx1Z2luRGVzY3JpcHRpb25dOworICAgICAgICBwbHVnaW5JbmZvLm5hbWUgPSBb
cGx1Z2luIG5hbWVdOworICAgICAgICBwbHVnaW5JbmZvLmZpbGUgPSBbcGx1Z2luIGZpbGVuYW1l
XTsKKyAgICAgICAgcGx1Z2luSW5mby5kZXNjID0gW3BsdWdpbiBwbHVnaW5EZXNjcmlwdGlvbl07
CiAKICAgICAgICAgTlNFbnVtZXJhdG9yKiBNSU1FVHlwZUVudW1lcmF0b3IgPSBbcGx1Z2luIE1J
TUVUeXBlRW51bWVyYXRvcl07CiAgICAgICAgIHdoaWxlIChOU1N0cmluZyogTUlNRSA9IFtNSU1F
VHlwZUVudW1lcmF0b3IgbmV4dE9iamVjdF0pIHsKLSAgICAgICAgICAgIE1pbWVDbGFzc0luZm8q
IG1pbWUgPSBuZXcgTWltZUNsYXNzSW5mbzsKLSAgICAgICAgICAgIHBsdWdpbkluZm8tPm1pbWVz
LmFwcGVuZChtaW1lKTsKLSAgICAgICAgICAgIG1pbWUtPnR5cGUgPSBTdHJpbmcoTUlNRSkubG93
ZXIoKTsKLSAgICAgICAgICAgIG1pbWUtPnN1ZmZpeGVzID0gW1twbHVnaW4gZXh0ZW5zaW9uc0Zv
ck1JTUVUeXBlOk1JTUVdIGNvbXBvbmVudHNKb2luZWRCeVN0cmluZzpAIiwiXTsKLSAgICAgICAg
ICAgIG1pbWUtPmRlc2MgPSBbcGx1Z2luIGRlc2NyaXB0aW9uRm9yTUlNRVR5cGU6TUlNRV07Ci0g
ICAgICAgICAgICBtaW1lLT5wbHVnaW4gPSBwbHVnaW5JbmZvOworICAgICAgICAgICAgTWltZUNs
YXNzSW5mbyBtaW1lOworCisgICAgICAgICAgICBtaW1lLnR5cGUgPSBTdHJpbmcoTUlNRSkubG93
ZXIoKTsKKyAgICAgICAgICAgIG1pbWUuc3VmZml4ZXMgPSBbW3BsdWdpbiBleHRlbnNpb25zRm9y
TUlNRVR5cGU6TUlNRV0gY29tcG9uZW50c0pvaW5lZEJ5U3RyaW5nOkAiLCJdOworICAgICAgICAg
ICAgbWltZS5kZXNjID0gW3BsdWdpbiBkZXNjcmlwdGlvbkZvck1JTUVUeXBlOk1JTUVdOworICAg
ICAgICAgICAgbWltZS5wbHVnaW5JbmRleCA9IG1fcGx1Z2lucy5zaXplKCk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIHBsdWdpbkluZm8ubWltZXMuYXBwZW5kKG1pbWUpOwogICAgICAgICB9
CiAKICAgICAgICAgbV9wbHVnaW5zLmFwcGVuZChwbHVnaW5JbmZvKTsKSW5kZXg6IFdlYkNvcmUv
cGx1Z2lucy9xdC9QbHVnaW5EYXRhUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lu
cy9xdC9QbHVnaW5EYXRhUXQuY3BwCShyZXZpc2lvbiA2MDI0MikKKysrIFdlYkNvcmUvcGx1Z2lu
cy9xdC9QbHVnaW5EYXRhUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxOSArNDIsMjAgQEAg
dm9pZCBQbHVnaW5EYXRhOjppbml0UGx1Z2lucygpCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgcXBsdWdpbnMuY291bnQoKTsgKytpKSB7CiAgICAgICAgICAgICBjb25zdCBRV2ViUGx1Z2lu
RmFjdG9yeTo6UGx1Z2luJiBxcGx1Z2luID0gcXBsdWdpbnMuYXQoaSk7CiAKLSAgICAgICAgICAg
IFBsdWdpbkluZm8qIGluZm8gPSBuZXcgUGx1Z2luSW5mbzsKLSAgICAgICAgICAgIGluZm8tPm5h
bWUgPSBxcGx1Z2luLm5hbWU7Ci0gICAgICAgICAgICBpbmZvLT5kZXNjID0gcXBsdWdpbi5kZXNj
cmlwdGlvbjsKKyAgICAgICAgICAgIFBsdWdpbkluZm8gaW5mbzsKKyAgICAgICAgICAgIGluZm8u
bmFtZSA9IHFwbHVnaW4ubmFtZTsKKyAgICAgICAgICAgIGluZm8uZGVzYyA9IHFwbHVnaW4uZGVz
Y3JpcHRpb247CiAKICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgcXBsdWdpbi5taW1l
VHlwZXMuY291bnQoKTsgKytqKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgUVdlYlBsdWdpbkZh
Y3Rvcnk6Ok1pbWVUeXBlJiBtaW1lVHlwZSA9IHFwbHVnaW4ubWltZVR5cGVzLmF0KGopOwogCi0g
ICAgICAgICAgICAgICAgTWltZUNsYXNzSW5mbyogbWltZUluZm8gPSBuZXcgTWltZUNsYXNzSW5m
bzsKLSAgICAgICAgICAgICAgICBtaW1lSW5mby0+dHlwZSA9IG1pbWVUeXBlLm5hbWU7Ci0gICAg
ICAgICAgICAgICAgbWltZUluZm8tPmRlc2MgPSBtaW1lVHlwZS5kZXNjcmlwdGlvbjsKLSAgICAg
ICAgICAgICAgICBtaW1lSW5mby0+c3VmZml4ZXMgPSBtaW1lVHlwZS5maWxlRXh0ZW5zaW9ucy5q
b2luKFFMYXRpbjFTdHJpbmcoIjsgIikpOworICAgICAgICAgICAgICAgIE1pbWVDbGFzc0luZm8g
bWltZUluZm87CisgICAgICAgICAgICAgICAgbWltZUluZm8udHlwZSA9IG1pbWVUeXBlLm5hbWU7
CisgICAgICAgICAgICAgICAgbWltZUluZm8uZGVzYyA9IG1pbWVUeXBlLmRlc2NyaXB0aW9uOwor
ICAgICAgICAgICAgICAgIG1pbWVJbmZvLnN1ZmZpeGVzID0gbWltZVR5cGUuZmlsZUV4dGVuc2lv
bnMuam9pbihRTGF0aW4xU3RyaW5nKCI7ICIpKTsKKyAgICAgICAgICAgICAgICBtaW1lSW5mby5w
bHVnaW5JbmRleCA9IG1fcGx1Z2lucy5zaXplKCk7CiAKLSAgICAgICAgICAgICAgICBpbmZvLT5t
aW1lcy5hcHBlbmQobWltZUluZm8pOworICAgICAgICAgICAgICAgIGluZm8ubWltZXMuYXBwZW5k
KG1pbWVJbmZvKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbV9wbHVnaW5zLmFwcGVu
ZChpbmZvKTsKQEAgLTY1LDMwICs2NiwzMCBAQCB2b2lkIFBsdWdpbkRhdGE6OmluaXRQbHVnaW5z
KCkKICAgICBjb25zdCBWZWN0b3I8UGx1Z2luUGFja2FnZSo+ICZwbHVnaW5zID0gZGItPnBsdWdp
bnMoKTsKIAogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGx1Z2lucy5zaXplKCk7
ICsraSkgewotICAgICAgICBQbHVnaW5JbmZvKiBpbmZvID0gbmV3IFBsdWdpbkluZm87CisgICAg
ICAgIFBsdWdpbkluZm8gaW5mbzsKICAgICAgICAgUGx1Z2luUGFja2FnZSogcGFja2FnZSA9IHBs
dWdpbnNbaV07CiAKLSAgICAgICAgaW5mby0+bmFtZSA9IHBhY2thZ2UtPm5hbWUoKTsKLSAgICAg
ICAgaW5mby0+ZmlsZSA9IHBhY2thZ2UtPmZpbGVOYW1lKCk7Ci0gICAgICAgIGluZm8tPmRlc2Mg
PSBwYWNrYWdlLT5kZXNjcmlwdGlvbigpOworICAgICAgICBpbmZvLm5hbWUgPSBwYWNrYWdlLT5u
YW1lKCk7CisgICAgICAgIGluZm8uZmlsZSA9IHBhY2thZ2UtPmZpbGVOYW1lKCk7CisgICAgICAg
IGluZm8uZGVzYyA9IHBhY2thZ2UtPmRlc2NyaXB0aW9uKCk7CiAKICAgICAgICAgY29uc3QgTUlN
RVRvRGVzY3JpcHRpb25zTWFwJiBtaW1lVG9EZXNjcmlwdGlvbnMgPSBwYWNrYWdlLT5taW1lVG9E
ZXNjcmlwdGlvbnMoKTsKICAgICAgICAgTUlNRVRvRGVzY3JpcHRpb25zTWFwOjpjb25zdF9pdGVy
YXRvciBlbmQgPSBtaW1lVG9EZXNjcmlwdGlvbnMuZW5kKCk7CiAgICAgICAgIGZvciAoTUlNRVRv
RGVzY3JpcHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIE1pbWVDbGFzc0luZm8qIG1p
bWUgPSBuZXcgTWltZUNsYXNzSW5mbzsKLSAgICAgICAgICAgIGluZm8tPm1pbWVzLmFwcGVuZCht
aW1lKTsKKyAgICAgICAgICAgIE1pbWVDbGFzc0luZm8gbWltZTsKKyAgICAgICAgICAgIGluZm8u
bWltZXMuYXBwZW5kKG1pbWUpOwogCi0gICAgICAgICAgICBtaW1lLT50eXBlID0gaXQtPmZpcnN0
OwotICAgICAgICAgICAgbWltZS0+ZGVzYyA9IGl0LT5zZWNvbmQ7Ci0gICAgICAgICAgICBtaW1l
LT5wbHVnaW4gPSBpbmZvOworICAgICAgICAgICAgbWltZS50eXBlID0gaXQtPmZpcnN0OworICAg
ICAgICAgICAgbWltZS5kZXNjID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIG1pbWUucGx1Z2lu
SW5kZXggPSBtX3BsdWdpbnMuc2l6ZSgpOwogCi0gICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBl
eHRlbnNpb25zID0gcGFja2FnZS0+bWltZVRvRXh0ZW5zaW9ucygpLmdldChtaW1lLT50eXBlKTsK
KyAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbnMgPSBwYWNrYWdlLT5taW1lVG9F
eHRlbnNpb25zKCkuZ2V0KG1pbWUudHlwZSk7CiAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBleHRlbnNpb25zLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgaWYg
KGkgPiAwKQotICAgICAgICAgICAgICAgICAgICBtaW1lLT5zdWZmaXhlcyArPSAiLCI7CisgICAg
ICAgICAgICAgICAgICAgIG1pbWUuc3VmZml4ZXMgKz0gIiwiOwogCi0gICAgICAgICAgICAgICAg
bWltZS0+c3VmZml4ZXMgKz0gZXh0ZW5zaW9uc1tpXTsKKyAgICAgICAgICAgICAgICBtaW1lLnN1
ZmZpeGVzICs9IGV4dGVuc2lvbnNbaV07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApJbmRl
eDogV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhV2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpbkRhdGFXaW4uY3BwCShyZXZpc2lvbiA2MDI0MikKKysr
IFdlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luRGF0YVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDMxICszMiwzMyBAQCB2b2lkIFBsdWdpbkRhdGE6OmluaXRQbHVnaW5zKCkKICAgICBjb25z
dCBWZWN0b3I8UGx1Z2luUGFja2FnZSo+ICZwbHVnaW5zID0gZGItPnBsdWdpbnMoKTsKIAogICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGx1Z2lucy5zaXplKCk7ICsraSkgewotICAg
ICAgICBQbHVnaW5JbmZvKiBpbmZvID0gbmV3IFBsdWdpbkluZm87CiAgICAgICAgIFBsdWdpblBh
Y2thZ2UqIHBhY2thZ2UgPSBwbHVnaW5zW2ldOwogCi0gICAgICAgIGluZm8tPm5hbWUgPSBwYWNr
YWdlLT5uYW1lKCk7Ci0gICAgICAgIGluZm8tPmZpbGUgPSBwYWNrYWdlLT5maWxlTmFtZSgpOwot
ICAgICAgICBpbmZvLT5kZXNjID0gcGFja2FnZS0+ZGVzY3JpcHRpb24oKTsKKyAgICAgICAgUGx1
Z2luSW5mbyBpbmZvOworICAgICAgICBpbmZvLm5hbWUgPSBwYWNrYWdlLT5uYW1lKCk7CisgICAg
ICAgIGluZm8uZmlsZSA9IHBhY2thZ2UtPmZpbGVOYW1lKCk7CisgICAgICAgIGluZm8uZGVzYyA9
IHBhY2thZ2UtPmRlc2NyaXB0aW9uKCk7CiAKICAgICAgICAgY29uc3QgTUlNRVRvRGVzY3JpcHRp
b25zTWFwJiBtaW1lVG9EZXNjcmlwdGlvbnMgPSBwYWNrYWdlLT5taW1lVG9EZXNjcmlwdGlvbnMo
KTsKICAgICAgICAgTUlNRVRvRGVzY3JpcHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBt
aW1lVG9EZXNjcmlwdGlvbnMuZW5kKCk7CiAgICAgICAgIGZvciAoTUlNRVRvRGVzY3JpcHRpb25z
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIE1pbWVDbGFzc0luZm8qIG1pbWUgPSBuZXcgTWlt
ZUNsYXNzSW5mbzsKLSAgICAgICAgICAgIGluZm8tPm1pbWVzLmFwcGVuZChtaW1lKTsKKyAgICAg
ICAgICAgIE1pbWVDbGFzc0luZm8gbWltZTsKIAotICAgICAgICAgICAgbWltZS0+dHlwZSA9IGl0
LT5maXJzdDsKLSAgICAgICAgICAgIG1pbWUtPmRlc2MgPSBpdC0+c2Vjb25kOwotICAgICAgICAg
ICAgbWltZS0+cGx1Z2luID0gaW5mbzsKKyAgICAgICAgICAgIG1pbWUudHlwZSA9IGl0LT5maXJz
dDsKKyAgICAgICAgICAgIG1pbWUuZGVzYyA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICBtaW1l
LnBsdWdpbkluZGV4ID0gbV9wbHVnaW5zLnNpemUoKTsKIAotICAgICAgICAgICAgVmVjdG9yPFN0
cmluZz4gZXh0ZW5zaW9ucyA9IHBhY2thZ2UtPm1pbWVUb0V4dGVuc2lvbnMoKS5nZXQobWltZS0+
dHlwZSk7CisgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBleHRlbnNpb25zID0gcGFja2FnZS0+
bWltZVRvRXh0ZW5zaW9ucygpLmdldChtaW1lLnR5cGUpOwogCiAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZXh0ZW5zaW9ucy5zaXplKCk7IGkrKykgewogICAgICAgICAgICAg
ICAgIGlmIChpID4gMCkKLSAgICAgICAgICAgICAgICAgICAgbWltZS0+c3VmZml4ZXMgKz0gIiwi
OworICAgICAgICAgICAgICAgICAgICBtaW1lLnN1ZmZpeGVzICs9ICIsIjsKIAotICAgICAgICAg
ICAgICAgIG1pbWUtPnN1ZmZpeGVzICs9IGV4dGVuc2lvbnNbaV07CisgICAgICAgICAgICAgICAg
bWltZS5zdWZmaXhlcyArPSBleHRlbnNpb25zW2ldOwogICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpbmZvLm1pbWVzLmFwcGVuZChtaW1lKTsKKwogICAgICAgICB9CiAKICAgICAgICAgbV9w
bHVnaW5zLmFwcGVuZChpbmZvKTsKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy93eC9QbHVnaW5EYXRh
V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy93eC9QbHVnaW5EYXRhV3guY3Bw
CShyZXZpc2lvbiA2MDI0MikKKysrIFdlYkNvcmUvcGx1Z2lucy93eC9QbHVnaW5EYXRhV3guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSwzMSArMzksMzIgQEAgdm9pZCBQbHVnaW5EYXRhOjppbml0
UGx1Z2lucygpCiAgICAgY29uc3QgVmVjdG9yPFBsdWdpblBhY2thZ2UqPiAmcGx1Z2lucyA9IGRi
LT5wbHVnaW5zKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBsdWdpbnMu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgUGx1Z2luSW5mbyogaW5mbyA9IG5ldyBQbHVnaW5JbmZv
OworICAgICAgICBQbHVnaW5JbmZvIGluZm87CiAgICAgICAgIFBsdWdpblBhY2thZ2UqIHBhY2th
Z2UgPSBwbHVnaW5zW2ldOwogCi0gICAgICAgIGluZm8tPm5hbWUgPSBwYWNrYWdlLT5uYW1lKCk7
Ci0gICAgICAgIGluZm8tPmZpbGUgPSBwYWNrYWdlLT5maWxlTmFtZSgpOwotICAgICAgICBpbmZv
LT5kZXNjID0gcGFja2FnZS0+ZGVzY3JpcHRpb24oKTsKKyAgICAgICAgaW5mby5uYW1lID0gcGFj
a2FnZS0+bmFtZSgpOworICAgICAgICBpbmZvLmZpbGUgPSBwYWNrYWdlLT5maWxlTmFtZSgpOwor
ICAgICAgICBpbmZvLmRlc2MgPSBwYWNrYWdlLT5kZXNjcmlwdGlvbigpOwogCiAgICAgICAgIGNv
bnN0IE1JTUVUb0Rlc2NyaXB0aW9uc01hcCYgbWltZVRvRGVzY3JpcHRpb25zID0gcGFja2FnZS0+
bWltZVRvRGVzY3JpcHRpb25zKCk7CiAgICAgICAgIE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gbWltZVRvRGVzY3JpcHRpb25zLmVuZCgpOwogICAgICAgICBmb3Ig
KE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtaW1lVG9EZXNjcmlw
dGlvbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBNaW1lQ2xhc3NJ
bmZvKiBtaW1lID0gbmV3IE1pbWVDbGFzc0luZm87Ci0gICAgICAgICAgICBpbmZvLT5taW1lcy5h
cHBlbmQobWltZSk7CisgICAgICAgICAgICBNaW1lQ2xhc3NJbmZvIG1pbWU7CiAKLSAgICAgICAg
ICAgIG1pbWUtPnR5cGUgPSBpdC0+Zmlyc3Q7Ci0gICAgICAgICAgICBtaW1lLT5kZXNjID0gaXQt
PnNlY29uZDsKLSAgICAgICAgICAgIG1pbWUtPnBsdWdpbiA9IGluZm87CisgICAgICAgICAgICBt
aW1lLnR5cGUgPSBpdC0+Zmlyc3Q7CisgICAgICAgICAgICBtaW1lLmRlc2MgPSBpdC0+c2Vjb25k
OworICAgICAgICAgICAgbWltZS5wbHVnaW5JbmRleCA9IG1fcGx1Z2lucy5zaXplKCk7CiAKLSAg
ICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbnMgPSBwYWNrYWdlLT5taW1lVG9FeHRl
bnNpb25zKCkuZ2V0KG1pbWUtPnR5cGUpOworICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZXh0
ZW5zaW9ucyA9IHBhY2thZ2UtPm1pbWVUb0V4dGVuc2lvbnMoKS5nZXQobWltZS50eXBlKTsKIAog
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4dGVuc2lvbnMuc2l6ZSgpOyBp
KyspIHsKICAgICAgICAgICAgICAgICBpZiAoaSA+IDApCi0gICAgICAgICAgICAgICAgICAgIG1p
bWUtPnN1ZmZpeGVzICs9ICIsIjsKKyAgICAgICAgICAgICAgICAgICAgbWltZS5zdWZmaXhlcyAr
PSAiLCI7CiAKLSAgICAgICAgICAgICAgICBtaW1lLT5zdWZmaXhlcyArPSBleHRlbnNpb25zW2ld
OworICAgICAgICAgICAgICAgIG1pbWUuc3VmZml4ZXMgKz0gZXh0ZW5zaW9uc1tpXTsKICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW5mby5taW1lcy5hcHBlbmQobWlt
ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBtX3BsdWdpbnMuYXBwZW5kKGluZm8pOwpJbmRleDog
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCShyZXZpc2lvbiA2MDI0MikKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNS0yNiAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENsZWFuIHVwIE1pbWVDbGFzc0luZm8gYW5kIFBsdWdpbkluZm8K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NzAwCisK
KyAgICAgICAgVXBkYXRlIGZvciBXZWJDb3JlIGNoYW5nZXMuCisKKyAgICAgICAgKiBzcmMvV2Vi
UGx1Z2luTGlzdEJ1aWxkZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luTGlz
dEJ1aWxkZXJJbXBsOjphZGRQbHVnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5MaXN0
QnVpbGRlckltcGw6OmFkZE1lZGlhVHlwZVRvTGFzdFBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsdWdpbkxpc3RCdWlsZGVySW1wbDo6YWRkRmlsZUV4dGVuc2lvblRvTGFzdE1lZGlhVHlw
ZSk6CisgICAgICAgICogc3JjL1dlYlBsdWdpbkxpc3RCdWlsZGVySW1wbC5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJQbHVnaW5MaXN0QnVpbGRlckltcGw6OldlYlBsdWdpbkxpc3RCdWlsZGVySW1w
bCk6CisKIDIwMTAtMDUtMjYgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCBjaHJvbWl1bSBidWlsZCBmaXgKSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9zcmMvQ2hyb21pdW1CcmlkZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9zcmMvQ2hyb21pdW1CcmlkZ2UuY3BwCShyZXZpc2lvbiA2MDI0MikKKysrIFdlYktpdC9jaHJv
bWl1bS9zcmMvQ2hyb21pdW1CcmlkZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDUsNyArNTA1
LDcgQEAgU3RyaW5nIENocm9taXVtQnJpZGdlOjpwcmVmZXJyZWRFeHRlbnNpbwogCiAvLyBQbHVn
aW4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLWJvb2wgQ2hyb21pdW1CcmlkZ2U6OnBsdWdpbnMoYm9vbCByZWZy
ZXNoLCBWZWN0b3I8UGx1Z2luSW5mbyo+KiByZXN1bHRzKQorYm9vbCBDaHJvbWl1bUJyaWRnZTo6
cGx1Z2lucyhib29sIHJlZnJlc2gsIFZlY3RvcjxQbHVnaW5JbmZvPiogcmVzdWx0cykKIHsKICAg
ICBXZWJQbHVnaW5MaXN0QnVpbGRlckltcGwgYnVpbGRlcihyZXN1bHRzKTsKICAgICB3ZWJLaXRD
bGllbnQoKS0+Z2V0UGx1Z2luTGlzdChyZWZyZXNoLCAmYnVpbGRlcik7CkluZGV4OiBXZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlBsdWdpbkxpc3RCdWlsZGVySW1wbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5MaXN0QnVpbGRlckltcGwuY3BwCShyZXZpc2lv
biA2MDI0MikKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMjcgKzQxLDI3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiB2b2lkIFdlYlBsdWdpbkxpc3RCdWlsZGVySW1wbDo6YWRkUGx1Z2luKGNvbnN0IFdlYlN0
cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgV2ViU3RyaW5n
JiBmaWxlTmFtZSkKIHsKLSAgICBQbHVnaW5JbmZvKiBpbmZvID0gbmV3IFBsdWdpbkluZm8oKTsK
LSAgICBpbmZvLT5uYW1lID0gbmFtZTsKLSAgICBpbmZvLT5kZXNjID0gZGVzY3JpcHRpb247Ci0g
ICAgaW5mby0+ZmlsZSA9IGZpbGVOYW1lOworICAgIFBsdWdpbkluZm8gaW5mbzsKKyAgICBpbmZv
Lm5hbWUgPSBuYW1lOworICAgIGluZm8uZGVzYyA9IGRlc2NyaXB0aW9uOworICAgIGluZm8uZmls
ZSA9IGZpbGVOYW1lOwogICAgIG1fcmVzdWx0cy0+YXBwZW5kKGluZm8pOwogfQogCiB2b2lkIFdl
YlBsdWdpbkxpc3RCdWlsZGVySW1wbDo6YWRkTWVkaWFUeXBlVG9MYXN0UGx1Z2luKGNvbnN0IFdl
YlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkZXNjcmlwdGlvbikKIHsKLSAgICBNaW1l
Q2xhc3NJbmZvKiBpbmZvID0gbmV3IE1pbWVDbGFzc0luZm8oKTsKLSAgICBpbmZvLT50eXBlID0g
bmFtZTsKLSAgICBpbmZvLT5kZXNjID0gZGVzY3JpcHRpb247Ci0gICAgbV9yZXN1bHRzLT5sYXN0
KCktPm1pbWVzLmFwcGVuZChpbmZvKTsKKyAgICBNaW1lQ2xhc3NJbmZvIGluZm87CisgICAgaW5m
by50eXBlID0gbmFtZTsKKyAgICBpbmZvLmRlc2MgPSBkZXNjcmlwdGlvbjsKKyAgICBtX3Jlc3Vs
dHMtPmxhc3QoKS5taW1lcy5hcHBlbmQoaW5mbyk7CiB9CiAKIHZvaWQgV2ViUGx1Z2luTGlzdEJ1
aWxkZXJJbXBsOjphZGRGaWxlRXh0ZW5zaW9uVG9MYXN0TWVkaWFUeXBlKGNvbnN0IFdlYlN0cmlu
ZyYgZXh0ZW5zaW9uKQogewotICAgIE1pbWVDbGFzc0luZm8qIGluZm8gPSBtX3Jlc3VsdHMtPmxh
c3QoKS0+bWltZXMubGFzdCgpOwotICAgIGlmICghaW5mby0+c3VmZml4ZXMuaXNFbXB0eSgpKQot
ICAgICAgICBpbmZvLT5zdWZmaXhlcy5hcHBlbmQoJywnKTsKLSAgICBpbmZvLT5zdWZmaXhlcy5h
cHBlbmQoZXh0ZW5zaW9uKTsKKyAgICBNaW1lQ2xhc3NJbmZvJiBpbmZvID0gbV9yZXN1bHRzLT5s
YXN0KCktPm1pbWVzLmxhc3QoKTsKKyAgICBpZiAoIWluZm8uc3VmZml4ZXMuaXNFbXB0eSgpKQor
ICAgICAgICBpbmZvLnN1ZmZpeGVzLmFwcGVuZCgnLCcpOworICAgIGluZm8uc3VmZml4ZXMuYXBw
ZW5kKGV4dGVuc2lvbik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5MaXN0QnVpbGRlckltcGwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkxpc3RCdWlsZGVySW1wbC5oCShyZXZpc2lvbiA2
MDI0MikKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFdlYlBsdWdpbkxpc3RCdWlsZGVySW1wbCA6IHB1YmxpYyBXZWJQbHVnaW5MaXN0QnVpbGRl
ciB7CiBwdWJsaWM6Ci0gICAgV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsKFZlY3RvcjxXZWJDb3Jl
OjpQbHVnaW5JbmZvKj4qIHJlc3VsdHMpIDogbV9yZXN1bHRzKHJlc3VsdHMpIHsgfQorICAgIFdl
YlBsdWdpbkxpc3RCdWlsZGVySW1wbChWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4qIHJlc3Vs
dHMpIDogbV9yZXN1bHRzKHJlc3VsdHMpIHsgfQogCiAgICAgLy8gV2ViUGx1Z2luTGlzdEJ1aWxk
ZXIgbWV0aG9kczoKICAgICB2aXJ0dWFsIHZvaWQgYWRkUGx1Z2luKGNvbnN0IFdlYlN0cmluZyYg
bmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgV2ViU3RyaW5nJiBmaWxl
TmFtZSk7CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWRkRmls
ZUV4dGVuc2lvblRvTGFzdE1lZGlhVHlwZShjb25zdCBXZWJTdHJpbmcmIGV4dGVuc2lvbik7CiAK
IHByaXZhdGU6Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8qPiogbV9yZXN1bHRzOwor
ICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiogbV9yZXN1bHRzOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57129</attachid>
            <date>2010-05-26 13:09:20 -0700</date>
            <delta_ts>2010-05-26 13:50:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39700-20100526130918.patch</filename>
            <type>text/plain</type>
            <size>36055</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDI0NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzMgQEAKKzIwMTAtMDUtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDbGVhbiB1cCBNaW1lQ2xhc3NJbmZvIGFuZCBQbHVnaW5JbmZvCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTcwMAorCisgICAgICAgIFRoaXMgZ2V0
cyByaWQgb2YgYWxsIHRoZSBoZWFwIGFsbG9jYXRpb24gZnJvbSBNaW1lQ2xhc3NJbmZvIGFuZCBQ
bHVnaW5JbmZvLiAKKyAgICAgICAgCisgICAgICAgIEl0IGFsc28gY2hhbmdlcyB0aGUgbV9wbHVn
aW5zIGFuZCBtX21pbWVzIHZlY3RvcnMgaW4gUGx1Z2luRGF0YSB0byBub3QgaG9sZCBoZWFwIGFs
bG9jYXRlZCBNaW1lQ2xhc3NJbmZvCisgICAgICAgIGFuZCBQbHVnaW5DbGFzc0luZm8gb2JqZWN0
cy4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpy
ZWZyZXNoUGx1Z2lucyk6CisgICAgICAgICogcGx1Z2lucy9NaW1lVHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNaW1lVHlwZTo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNaW1lVHlwZTo6
c3VmZml4ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWltZVR5cGU6OmRlc2NyaXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1pbWVUeXBlOjplbmFibGVkUGx1Z2luKToKKyAgICAgICAgKiBwbHVn
aW5zL01pbWVUeXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpNaW1lVHlwZTo6bWltZUNsYXNzSW5m
byk6CisgICAgICAgICogcGx1Z2lucy9NaW1lVHlwZUFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1pbWVUeXBlQXJyYXk6Oml0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6TWltZVR5cGVBcnJh
eTo6Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1pbWVUeXBlQXJyYXk6
Om5hbWVkSXRlbSk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbjo6ZmlsZW5hbWUp
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luOjpkZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW46Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW46Oml0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luOjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6UGx1Z2luOjpuYW1lZEl0ZW0pOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luLmg6
CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW46OnBsdWdpbkluZm8pOgorICAgICAgICAqIHBsdWdp
bnMvUGx1Z2luQXJyYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luQXJyYXk6Omxlbmd0
aCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5BcnJheTo6aXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5BcnJheTo6Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsdWdpbkFycmF5OjpuYW1lZEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luQXJyYXk6
OnBsdWdpbkRhdGEpOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luQXJyYXkuaDoKKyAgICAgICAg
KiBwbHVnaW5zL1BsdWdpbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YTo6
UGx1Z2luRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhOjp+UGx1Z2luRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhOjpzdXBwb3J0c01pbWVUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsdWdpbkRhdGE6OnBsdWdpbk5hbWVGb3JNaW1lVHlwZSk6CisgICAgICAg
ICogcGx1Z2lucy9QbHVnaW5EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToK
KyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5EYXRhOjpkaXNjb25uZWN0UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5E
YXRhOjpwYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGE6OnBsdWdpbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YTo6bWltZXMpOgorICAgICAgICAqIHBsdWdpbnMvY2hy
b21pdW0vUGx1Z2luRGF0YUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkNh
Y2hlOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5DYWNoZTo6cGx1Z2lucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhOjppbml0UGx1Z2lucyk6CisgICAgICAgIChXZWJD
b3JlOjpnZXRQbHVnaW5NaW1lVHlwZUZyb21FeHRlbnNpb24pOgorICAgICAgICAqIHBsdWdpbnMv
Z3RrL1BsdWdpbkRhdGFHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YTo6aW5p
dFBsdWdpbnMpOgorICAgICAgICAqIHBsdWdpbnMvbWFjL1BsdWdpbkRhdGFNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhOjppbml0UGx1Z2lucyk6CisgICAgICAgICogcGx1Z2lu
cy9xdC9QbHVnaW5EYXRhUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YTo6aW5p
dFBsdWdpbnMpOgorICAgICAgICAqIHBsdWdpbnMvd2luL1BsdWdpbkRhdGFXaW4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YTo6aW5pdFBsdWdpbnMpOgorICAgICAgICAqIHBsdWdp
bnMvd3gvUGx1Z2luRGF0YVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGE6Omlu
aXRQbHVnaW5zKToKKwogMjAxMC0wNS0yNiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9QYWdlLmNwcAko
cmV2aXNpb24gNjAyNDUpCisrKyBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM3NywxMyArMzc3LDE3IEBAIHZvaWQgUGFnZTo6cmVmcmVzaFBsdWdpbnMoYm9vbCByZWxv
YWQpCiAKICAgICBIYXNoU2V0PFBhZ2UqPjo6aXRlcmF0b3IgZW5kID0gYWxsUGFnZXMtPmVuZCgp
OwogICAgIGZvciAoSGFzaFNldDxQYWdlKj46Oml0ZXJhdG9yIGl0ID0gYWxsUGFnZXMtPmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAoKml0KS0+bV9wbHVnaW5EYXRhID0gMDsK
KyAgICAgICAgUGFnZSogcGFnZSA9ICppdDsKKyAgICAgICAgCisgICAgICAgIC8vIENsZWFyIG91
dCB0aGUgcGFnZSdzIHBsdWctaW4gZGF0YS4KKyAgICAgICAgcGFnZS0+bV9wbHVnaW5EYXRhID0g
MDsKIAotICAgICAgICBpZiAocmVsb2FkKSB7Ci0gICAgICAgICAgICBmb3IgKEZyYW1lKiBmcmFt
ZSA9ICgqaXQpLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJh
dmVyc2VOZXh0KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLT5jb250
YWluc1BsdWdpbnMoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWVzTmVlZGluZ1JlbG9hZC5h
cHBlbmQoZnJhbWUpOwotICAgICAgICAgICAgfQorICAgICAgICBpZiAoIXJlbG9hZCkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAo
Kml0KS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNl
TmV4dCgpKSB7CisgICAgICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLT5jb250YWluc1BsdWdp
bnMoKSkKKyAgICAgICAgICAgICAgICBmcmFtZXNOZWVkaW5nUmVsb2FkLmFwcGVuZChmcmFtZSk7
CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hy
b21pdW1CcmlkZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0No
cm9taXVtQnJpZGdlLmgJKHJldmlzaW9uIDYwMjQ1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9DaHJvbWl1bUJyaWRnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiTGlua0hhc2guaCIKICNpbmNsdWRlICJQYXNzUmVmUHRyLmgiCiAjaW5jbHVkZSAi
UGFzdGVib2FyZFByaXZhdGUuaCIKKyNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCiAKICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKQEAgLTY0LDcgKzY1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIGNsYXNzIFdpZGdldDsKIAogICAgIHN0cnVjdCBDb29raWU7Ci0gICAgc3RydWN0IFBsdWdp
bkluZm87CiAgICAgc3RydWN0IEZvbnRSZW5kZXJTdHlsZTsKIAogICAgIC8vIEFuIGludGVyZmFj
ZSB0byB0aGUgZW1iZWRkaW5nIGxheWVyLCB3aGljaCBoYXMgdGhlIGFiaWxpdHkgdG8gYW5zd2Vy
CkBAIC0xNzYsNyArMTc2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMg
U3RyaW5nIHByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpOwogCiAgICAgICAgIC8vIFBsdWdpbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgIHN0YXRpYyBib29sIHBsdWdp
bnMoYm9vbCByZWZyZXNoLCBWZWN0b3I8UGx1Z2luSW5mbyo+Kik7CisgICAgICAgIHN0YXRpYyBi
b29sIHBsdWdpbnMoYm9vbCByZWZyZXNoLCBWZWN0b3I8UGx1Z2luSW5mbz4qKTsKICAgICAgICAg
c3RhdGljIE5QT2JqZWN0KiBwbHVnaW5TY3JpcHRhYmxlT2JqZWN0KFdpZGdldCopOwogICAgICAg
ICBzdGF0aWMgYm9vbCBwb3B1cHNBbGxvd2VkKE5QUCk7CiAKSW5kZXg6IFdlYkNvcmUvcGx1Z2lu
cy9NaW1lVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL01pbWVUeXBlLmNw
cAkocmV2aXNpb24gNjAyNDUpCisrKyBXZWJDb3JlL3BsdWdpbnMvTWltZVR5cGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCwxNyArNDAsMTcgQEAgTWltZVR5cGU6On5NaW1lVHlwZSgpCiAKIGNv
bnN0IFN0cmluZyAmTWltZVR5cGU6OnR5cGUoKSBjb25zdAogewotICAgIHJldHVybiBtX3BsdWdp
bkRhdGEtPm1pbWVzKClbbV9pbmRleF0tPnR5cGU7CisgICAgcmV0dXJuIG1pbWVDbGFzc0luZm8o
KS50eXBlOwogfQogCiBjb25zdCBTdHJpbmcgJk1pbWVUeXBlOjpzdWZmaXhlcygpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fcGx1Z2luRGF0YS0+bWltZXMoKVttX2luZGV4XS0+c3VmZml4ZXM7Cisg
ICAgcmV0dXJuIG1pbWVDbGFzc0luZm8oKS5zdWZmaXhlczsKIH0KIAogY29uc3QgU3RyaW5nICZN
aW1lVHlwZTo6ZGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIHJldHVybiBtX3BsdWdpbkRhdGEt
Pm1pbWVzKClbbV9pbmRleF0tPmRlc2M7CisgICAgcmV0dXJuIG1pbWVDbGFzc0luZm8oKS5kZXNj
OwogfQogCiBQYXNzUmVmUHRyPFBsdWdpbj4gTWltZVR5cGU6OmVuYWJsZWRQbHVnaW4oKSBjb25z
dApAQCAtNTksMTMgKzU5LDcgQEAgUGFzc1JlZlB0cjxQbHVnaW4+IE1pbWVUeXBlOjplbmFibGVk
UGx1ZwogICAgIGlmICghcCB8fCAhcC0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5hbGxvd1BsdWdp
bnMoTm90QWJvdXRUb0luc3RhbnRpYXRlUGx1Z2luKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICBjb25zdCBQbHVnaW5JbmZvICppbmZvID0gbV9wbHVnaW5EYXRhLT5taW1lcygpW21faW5kZXhd
LT5wbHVnaW47Ci0gICAgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8qPiYgcGx1Z2lucyA9IG1fcGx1
Z2luRGF0YS0+cGx1Z2lucygpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGx1Z2lucy5z
aXplKCk7ICsraSkgewotICAgICAgICBpZiAocGx1Z2luc1tpXSA9PSBpbmZvKQotICAgICAgICAg
ICAgcmV0dXJuIFBsdWdpbjo6Y3JlYXRlKG1fcGx1Z2luRGF0YS5nZXQoKSwgaSk7Ci0gICAgfQot
ICAgIHJldHVybiAwOworICAgIHJldHVybiBQbHVnaW46OmNyZWF0ZShtX3BsdWdpbkRhdGEuZ2V0
KCksIG1pbWVDbGFzc0luZm8oKS5wbHVnaW5JbmRleCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9NaW1lVHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGx1Z2lucy9NaW1lVHlwZS5oCShyZXZpc2lvbiA2MDI0NSkKKysrIFdlYkNvcmUvcGx1
Z2lucy9NaW1lVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgUGFzc1JlZlB0cjxQbHVnaW4+IGVuYWJsZWRQbHVnaW4oKSBj
b25zdDsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGNvbnN0IE1pbWVDbGFzc0luZm8mIG1pbWVD
bGFzc0luZm8oKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbkRhdGEtPm1pbWVzKClbbV9pbmRleF07
IH0KKyAgICAgICAgCiAgICAgICAgIE1pbWVUeXBlKFBhc3NSZWZQdHI8UGx1Z2luRGF0YT4sIHVu
c2lnbmVkIGluZGV4KTsKICAgICAgICAgUmVmUHRyPFBsdWdpbkRhdGE+IG1fcGx1Z2luRGF0YTsK
ICAgICAgICAgdW5zaWduZWQgbV9pbmRleDsKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9NaW1lVHlw
ZUFycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMvTWltZVR5cGVBcnJheS5j
cHAJKHJldmlzaW9uIDYwMjQ1KQorKysgV2ViQ29yZS9wbHVnaW5zL01pbWVUeXBlQXJyYXkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIFBhc3NSZWZQdHI8TWltZVR5cGU+IE1p
bWVUeXBlQXJyYXk6Oml0ZW0KICAgICBQbHVnaW5EYXRhKiBkYXRhID0gZ2V0UGx1Z2luRGF0YSgp
OwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgY29uc3QgVmVjdG9yPE1p
bWVDbGFzc0luZm8qPiYgbWltZXMgPSBkYXRhLT5taW1lcygpOworICAgIGNvbnN0IFZlY3RvcjxN
aW1lQ2xhc3NJbmZvPiYgbWltZXMgPSBkYXRhLT5taW1lcygpOwogICAgIGlmIChpbmRleCA+PSBt
aW1lcy5zaXplKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBNaW1lVHlwZTo6Y3Jl
YXRlKGRhdGEsIGluZGV4KS5nZXQoKTsKQEAgLTYxLDkgKzYxLDkgQEAgYm9vbCBNaW1lVHlwZUFy
cmF5OjpjYW5HZXRJdGVtc0Zvck5hbWUoYwogICAgIFBsdWdpbkRhdGEgKmRhdGEgPSBnZXRQbHVn
aW5EYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gMDsKLSAgICBjb25zdCBW
ZWN0b3I8TWltZUNsYXNzSW5mbyo+JiBtaW1lcyA9IGRhdGEtPm1pbWVzKCk7CisgICAgY29uc3Qg
VmVjdG9yPE1pbWVDbGFzc0luZm8+JiBtaW1lcyA9IGRhdGEtPm1pbWVzKCk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1pbWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtaW1l
c1tpXS0+dHlwZSA9PSBwcm9wZXJ0eU5hbWUpCisgICAgICAgIGlmIChtaW1lc1tpXS50eXBlID09
IHByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1
cm4gZmFsc2U7CkBAIC03NCw5ICs3NCw5IEBAIFBhc3NSZWZQdHI8TWltZVR5cGU+IE1pbWVUeXBl
QXJyYXk6Om5hbWUKICAgICBQbHVnaW5EYXRhICpkYXRhID0gZ2V0UGx1Z2luRGF0YSgpOwogICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgY29uc3QgVmVjdG9yPE1pbWVDbGFz
c0luZm8qPiYgbWltZXMgPSBkYXRhLT5taW1lcygpOworICAgIGNvbnN0IFZlY3RvcjxNaW1lQ2xh
c3NJbmZvPiYgbWltZXMgPSBkYXRhLT5taW1lcygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtaW1lcy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobWltZXNbaV0tPnR5cGUgPT0g
cHJvcGVydHlOYW1lKQorICAgICAgICBpZiAobWltZXNbaV0udHlwZSA9PSBwcm9wZXJ0eU5hbWUp
CiAgICAgICAgICAgICByZXR1cm4gTWltZVR5cGU6OmNyZWF0ZShkYXRhLCBpKS5nZXQoKTsKICAg
ICB9CiAgICAgcmV0dXJuIDA7CkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luLmNwcAkocmV2aXNpb24gNjAyNDUpCisr
KyBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNTMgKzM3
LDUzIEBAIFBsdWdpbjo6flBsdWdpbigpCiAKIFN0cmluZyBQbHVnaW46Om5hbWUoKSBjb25zdAog
ewotICAgIHJldHVybiBtX3BsdWdpbkRhdGEtPnBsdWdpbnMoKVttX2luZGV4XS0+bmFtZTsKKyAg
ICByZXR1cm4gcGx1Z2luSW5mbygpLm5hbWU7CiB9CiAKIFN0cmluZyBQbHVnaW46OmZpbGVuYW1l
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wbHVnaW5EYXRhLT5wbHVnaW5zKClbbV9pbmRleF0t
PmZpbGU7CisgICAgcmV0dXJuIHBsdWdpbkluZm8oKS5maWxlOwogfQogCiBTdHJpbmcgUGx1Z2lu
OjpkZXNjcmlwdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGx1Z2luRGF0YS0+cGx1Z2lu
cygpW21faW5kZXhdLT5kZXNjOworICAgIHJldHVybiBwbHVnaW5JbmZvKCkuZGVzYzsKIH0KIAog
dW5zaWduZWQgUGx1Z2luOjpsZW5ndGgoKSBjb25zdAogewotICAgIHJldHVybiBtX3BsdWdpbkRh
dGEtPnBsdWdpbnMoKVttX2luZGV4XS0+bWltZXMuc2l6ZSgpOworICAgIHJldHVybiBwbHVnaW5J
bmZvKCkubWltZXMuc2l6ZSgpOwogfQogCiBQYXNzUmVmUHRyPE1pbWVUeXBlPiBQbHVnaW46Oml0
ZW0odW5zaWduZWQgaW5kZXgpCiB7Ci0gICAgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8qPiYgcGx1
Z2lucyA9IG1fcGx1Z2luRGF0YS0+cGx1Z2lucygpOwotICAgIGlmIChpbmRleCA+PSBwbHVnaW5z
W21faW5kZXhdLT5taW1lcy5zaXplKCkpCisgICAgaWYgKGluZGV4ID49IHBsdWdpbkluZm8oKS5t
aW1lcy5zaXplKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgTWltZUNsYXNzSW5mbyogbWlt
ZSA9IHBsdWdpbnNbbV9pbmRleF0tPm1pbWVzW2luZGV4XTsKKyAgICBjb25zdCBNaW1lQ2xhc3NJ
bmZvJiBtaW1lID0gcGx1Z2luSW5mbygpLm1pbWVzW2luZGV4XTsKIAotICAgIGNvbnN0IFZlY3Rv
cjxNaW1lQ2xhc3NJbmZvKj4mIG1pbWVzID0gbV9wbHVnaW5EYXRhLT5taW1lcygpOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtaW1lcy5zaXplKCk7ICsraSkKKyAgICBjb25zdCBWZWN0
b3I8TWltZUNsYXNzSW5mbz4mIG1pbWVzID0gbV9wbHVnaW5EYXRhLT5taW1lcygpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtaW1lcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAo
bWltZXNbaV0gPT0gbWltZSkKICAgICAgICAgICAgIHJldHVybiBNaW1lVHlwZTo6Y3JlYXRlKG1f
cGx1Z2luRGF0YS5nZXQoKSwgaSkuZ2V0KCk7CisgICAgfQogICAgIHJldHVybiAwOwogfQogCiBi
b29sIFBsdWdpbjo6Y2FuR2V0SXRlbXNGb3JOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVy
dHlOYW1lKQogewotICAgIGNvbnN0IFZlY3RvcjxNaW1lQ2xhc3NJbmZvKj4mIG1pbWVzID0gbV9w
bHVnaW5EYXRhLT5taW1lcygpOworICAgIGNvbnN0IFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiYgbWlt
ZXMgPSBtX3BsdWdpbkRhdGEtPm1pbWVzKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1pbWVzLnNpemUoKTsgKytpKQotICAgICAgICBpZiAobWltZXNbaV0tPnR5cGUgPT0gcHJvcGVy
dHlOYW1lKQorICAgICAgICBpZiAobWltZXNbaV0udHlwZSA9PSBwcm9wZXJ0eU5hbWUpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIFBhc3NSZWZQdHI8
TWltZVR5cGU+IFBsdWdpbjo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlO
YW1lKQogewotICAgIGNvbnN0IFZlY3RvcjxNaW1lQ2xhc3NJbmZvKj4mIG1pbWVzID0gbV9wbHVn
aW5EYXRhLT5taW1lcygpOworICAgIGNvbnN0IFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiYgbWltZXMg
PSBtX3BsdWdpbkRhdGEtPm1pbWVzKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1p
bWVzLnNpemUoKTsgKytpKQotICAgICAgICBpZiAobWltZXNbaV0tPnR5cGUgPT0gcHJvcGVydHlO
YW1lKQorICAgICAgICBpZiAobWltZXNbaV0udHlwZSA9PSBwcm9wZXJ0eU5hbWUpCiAgICAgICAg
ICAgICByZXR1cm4gTWltZVR5cGU6OmNyZWF0ZShtX3BsdWdpbkRhdGEuZ2V0KCksIGkpLmdldCgp
OwogICAgIHJldHVybiAwOwogfQpJbmRleDogV2ViQ29yZS9wbHVnaW5zL1BsdWdpbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW4uaAkocmV2aXNpb24gNjAyNDUpCisrKyBX
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQYXNzUmVmUHRyPE1pbWVUeXBlPiBuYW1lZEl0
ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOwogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgY29uc3QgUGx1Z2luSW5mbyYgcGx1Z2luSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1
Z2luRGF0YS0+cGx1Z2lucygpW21faW5kZXhdOyB9CisKICAgICAgICAgUGx1Z2luKFBsdWdpbkRh
dGEqLCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZlB0cjxQbHVnaW5EYXRhPiBtX3BsdWdp
bkRhdGE7CiAgICAgICAgIHVuc2lnbmVkIG1faW5kZXg7CkluZGV4OiBXZWJDb3JlL3BsdWdpbnMv
UGx1Z2luQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5BcnJh
eS5jcHAJKHJldmlzaW9uIDYwMjQ1KQorKysgV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkFycmF5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBQbHVnaW5BcnJheTo6flBsdWdpbkFy
cmF5KCkKIAogdW5zaWduZWQgUGx1Z2luQXJyYXk6Omxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgUGx1
Z2luRGF0YSogZGF0YSA9IGdldFBsdWdpbkRhdGEoKTsKKyAgICBQbHVnaW5EYXRhKiBkYXRhID0g
cGx1Z2luRGF0YSgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0
dXJuIGRhdGEtPnBsdWdpbnMoKS5zaXplKCk7CkBAIC00NywxMCArNDcsMTAgQEAgdW5zaWduZWQg
UGx1Z2luQXJyYXk6Omxlbmd0aCgpIGNvbnN0CiAKIFBhc3NSZWZQdHI8UGx1Z2luPiBQbHVnaW5B
cnJheTo6aXRlbSh1bnNpZ25lZCBpbmRleCkKIHsKLSAgICBQbHVnaW5EYXRhKiBkYXRhID0gZ2V0
UGx1Z2luRGF0YSgpOworICAgIFBsdWdpbkRhdGEqIGRhdGEgPSBwbHVnaW5EYXRhKCk7CiAgICAg
aWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gMDsKLSAgICBjb25zdCBWZWN0b3I8UGx1Z2luSW5m
byo+JiBwbHVnaW5zID0gZGF0YS0+cGx1Z2lucygpOworICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5J
bmZvPiYgcGx1Z2lucyA9IGRhdGEtPnBsdWdpbnMoKTsKICAgICBpZiAoaW5kZXggPj0gcGx1Z2lu
cy5zaXplKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBQbHVnaW46OmNyZWF0ZShk
YXRhLCBpbmRleCkuZ2V0KCk7CkBAIC01OCwxMiArNTgsMTIgQEAgUGFzc1JlZlB0cjxQbHVnaW4+
IFBsdWdpbkFycmF5OjppdGVtKHVucwogCiBib29sIFBsdWdpbkFycmF5OjpjYW5HZXRJdGVtc0Zv
ck5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgUGx1Z2luRGF0
YSogZGF0YSA9IGdldFBsdWdpbkRhdGEoKTsKKyAgICBQbHVnaW5EYXRhKiBkYXRhID0gcGx1Z2lu
RGF0YSgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgY29uc3QgVmVj
dG9yPFBsdWdpbkluZm8qPiYgcGx1Z2lucyA9IGRhdGEtPnBsdWdpbnMoKTsKKyAgICBjb25zdCBW
ZWN0b3I8UGx1Z2luSW5mbz4mIHBsdWdpbnMgPSBkYXRhLT5wbHVnaW5zKCk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKHBs
dWdpbnNbaV0tPm5hbWUgPT0gcHJvcGVydHlOYW1lKQorICAgICAgICBpZiAocGx1Z2luc1tpXS5u
YW1lID09IHByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAg
ICByZXR1cm4gZmFsc2U7CkBAIC03MSwxMiArNzEsMTIgQEAgYm9vbCBQbHVnaW5BcnJheTo6Y2Fu
R2V0SXRlbXNGb3JOYW1lKGNvbgogCiBQYXNzUmVmUHRyPFBsdWdpbj4gUGx1Z2luQXJyYXk6Om5h
bWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKLSAgICBQbHVnaW5E
YXRhKiBkYXRhID0gZ2V0UGx1Z2luRGF0YSgpOworICAgIFBsdWdpbkRhdGEqIGRhdGEgPSBwbHVn
aW5EYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gMDsKLSAgICBjb25zdCBW
ZWN0b3I8UGx1Z2luSW5mbyo+JiBwbHVnaW5zID0gZGF0YS0+cGx1Z2lucygpOworICAgIGNvbnN0
IFZlY3RvcjxQbHVnaW5JbmZvPiYgcGx1Z2lucyA9IGRhdGEtPnBsdWdpbnMoKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgcGx1Z2lucy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAo
cGx1Z2luc1tpXS0+bmFtZSA9PSBwcm9wZXJ0eU5hbWUpCisgICAgICAgIGlmIChwbHVnaW5zW2ld
Lm5hbWUgPT0gcHJvcGVydHlOYW1lKQogICAgICAgICAgICAgcmV0dXJuIFBsdWdpbjo6Y3JlYXRl
KGRhdGEsIGkpLmdldCgpOwogICAgIH0KICAgICByZXR1cm4gMDsKQEAgLTg3LDE0ICs4NywxNCBA
QCB2b2lkIFBsdWdpbkFycmF5OjpyZWZyZXNoKGJvb2wgcmVsb2FkKQogICAgIFBhZ2U6OnJlZnJl
c2hQbHVnaW5zKHJlbG9hZCk7CiB9CiAKLVBsdWdpbkRhdGEqIFBsdWdpbkFycmF5OjpnZXRQbHVn
aW5EYXRhKCkgY29uc3QKK1BsdWdpbkRhdGEqIFBsdWdpbkFycmF5OjpwbHVnaW5EYXRhKCkgY29u
c3QKIHsKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwotICAgIFBhZ2UqIHAg
PSBtX2ZyYW1lLT5wYWdlKCk7Ci0gICAgaWYgKCFwKQorICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1l
LT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4g
cC0+cGx1Z2luRGF0YSgpOworICAgIHJldHVybiBwYWdlLT5wbHVnaW5EYXRhKCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5BcnJheS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5BcnJheS5oCShyZXZpc2lvbiA2
MDI0NSkKKysrIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5BcnJheS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIFBsdWdpbkFycmF5KEZyYW1lKik7Ci0gICAgICAgIFBsdWdpbkRhdGEqIGdldFBsdWdpbkRh
dGEoKSBjb25zdDsKKyAgICAgICAgUGx1Z2luRGF0YSogcGx1Z2luRGF0YSgpIGNvbnN0OwogCiAg
ICAgICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgIH07CkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvUGx1
Z2luRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuY3Bw
CShyZXZpc2lvbiA2MDI0NSkKKysrIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzIsMzEgKzMyLDMzIEBAIFBsdWdpbkRhdGE6OlBsdWdpbkRhdGEoY29u
c3QgUGFnZSogcGFnZSkKICAgICBpbml0UGx1Z2lucygpOwogCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fcGx1Z2lucy5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBQbHVnaW5J
bmZvKiBwbHVnaW4gPSBtX3BsdWdpbnNbaV07Ci0gICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7
IGogPCBwbHVnaW4tPm1pbWVzLnNpemUoKTsgKytqKQotICAgICAgICAgICAgbV9taW1lcy5hcHBl
bmQocGx1Z2luLT5taW1lc1tqXSk7CisgICAgICAgIGNvbnN0IFBsdWdpbkluZm8mIHBsdWdpbiA9
IG1fcGx1Z2luc1tpXTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHBsdWdpbi5t
aW1lcy5zaXplKCk7ICsraikKKyAgICAgICAgICAgIG1fbWltZXMuYXBwZW5kKHBsdWdpbi5taW1l
c1tqXSk7CiAgICAgfQogfQogCiBQbHVnaW5EYXRhOjp+UGx1Z2luRGF0YSgpCiB7Ci0gICAgZGVs
ZXRlQWxsVmFsdWVzKG1fcGx1Z2lucyk7Ci0gICAgZGVsZXRlQWxsVmFsdWVzKG1fbWltZXMpOwog
fQogCiBib29sIFBsdWdpbkRhdGE6OnN1cHBvcnRzTWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkgY29uc3QKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW1lcy5zaXpl
KCk7ICsraSkKLSAgICAgICAgaWYgKG1fbWltZXNbaV0tPnR5cGUgPT0gbWltZVR5cGUpCisgICAg
ICAgIGlmIChtX21pbWVzW2ldLnR5cGUgPT0gbWltZVR5cGUpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIFN0cmluZyBQbHVnaW5EYXRhOjpwbHVnaW5O
YW1lRm9yTWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKIHsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9taW1lcy5zaXplKCk7ICsraSkKLSAgICAgICAgaWYgKG1f
bWltZXNbaV0tPnR5cGUgPT0gbWltZVR5cGUpCi0gICAgICAgICAgICByZXR1cm4gbV9taW1lc1tp
XS0+cGx1Z2luLT5uYW1lOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21pbWVzLnNp
emUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IE1pbWVDbGFzc0luZm8mIGluZm8gPSBtX21pbWVz
W2ldOworICAgIAorICAgICAgICBpZiAoaW5mby50eXBlID09IG1pbWVUeXBlKQorICAgICAgICAg
ICAgcmV0dXJuIG1fcGx1Z2luc1tpbmZvLnBsdWdpbkluZGV4XS5uYW1lOworICAgIH0KKwogICAg
IHJldHVybiBTdHJpbmcoKTsKIH0KIApJbmRleDogV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5oCShyZXZpc2lvbiA2
MDI0NSkKKysrIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDQ4ICsyNiw1MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBQYWdl
OwotICAgIHN0cnVjdCBQbHVnaW5JbmZvOworY2xhc3MgUGFnZTsKK3N0cnVjdCBQbHVnaW5JbmZv
OwogCi0gICAgc3RydWN0IE1pbWVDbGFzc0luZm8gOiBOb25jb3B5YWJsZSB7Ci0gICAgICAgIFN0
cmluZyB0eXBlOwotICAgICAgICBTdHJpbmcgZGVzYzsKLSAgICAgICAgU3RyaW5nIHN1ZmZpeGVz
OwotICAgICAgICBQbHVnaW5JbmZvKiBwbHVnaW47Ci0gICAgfTsKLQotICAgIHN0cnVjdCBQbHVn
aW5JbmZvIDogTm9uY29weWFibGUgewotICAgICAgICBTdHJpbmcgbmFtZTsKLSAgICAgICAgU3Ry
aW5nIGZpbGU7Ci0gICAgICAgIFN0cmluZyBkZXNjOwotICAgICAgICBWZWN0b3I8TWltZUNsYXNz
SW5mbyo+IG1pbWVzOwotICAgIH07Ci0KLSAgICAvLyBGSVhNRTogbWVyZ2Ugd2l0aCBQbHVnaW5E
YXRhYmFzZSBpbiB0aGUgZnV0dXJlCi0gICAgY2xhc3MgUGx1Z2luRGF0YSA6IHB1YmxpYyBSZWZD
b3VudGVkPFBsdWdpbkRhdGE+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFBsdWdpbkRhdGE+IGNyZWF0ZShjb25zdCBQYWdlKiBwYWdlKSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgUGx1Z2luRGF0YShwYWdlKSk7IH0KLSAgICAgICAgflBsdWdpbkRhdGEoKTsKLQotICAg
ICAgICB2b2lkIGRpc2Nvbm5lY3RQYWdlKCkgeyBtX3BhZ2UgPSAwOyB9Ci0gICAgICAgIGNvbnN0
IFBhZ2UqIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7IH0KLQotICAgICAgICBjb25zdCBW
ZWN0b3I8UGx1Z2luSW5mbyo+JiBwbHVnaW5zKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5zOyB9
Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxNaW1lQ2xhc3NJbmZvKj4mIG1pbWVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9taW1lczsgfQotCi0gICAgICAgIGJvb2wgc3VwcG9ydHNNaW1lVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKSBjb25zdDsKLSAgICAgICAgU3RyaW5nIHBsdWdpbk5hbWVGb3JNaW1l
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdDsKLQotICAgICAgICBzdGF0aWMgdm9p
ZCByZWZyZXNoKCk7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBQbHVnaW5EYXRhKGNvbnN0IFBh
Z2UqKTsKLSAgICAgICAgdm9pZCBpbml0UGx1Z2lucygpOwotCi0gICAgICAgIFZlY3RvcjxQbHVn
aW5JbmZvKj4gbV9wbHVnaW5zOwotICAgICAgICBWZWN0b3I8TWltZUNsYXNzSW5mbyo+IG1fbWlt
ZXM7Ci0gICAgICAgIGNvbnN0IFBhZ2UqIG1fcGFnZTsKLSAgICB9Oworc3RydWN0IE1pbWVDbGFz
c0luZm8geworICAgIFN0cmluZyB0eXBlOworICAgIFN0cmluZyBkZXNjOworICAgIFN0cmluZyBz
dWZmaXhlczsKKyAgICB1bnNpZ25lZCBwbHVnaW5JbmRleDsKK307CisKK2lubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgTWltZUNsYXNzSW5mbyYgYSwgY29uc3QgTWltZUNsYXNzSW5mbyYgYikK
K3sKKyAgICByZXR1cm4gYS50eXBlID09IGIudHlwZSAmJiBhLmRlc2MgPT0gYi5kZXNjICYmIGEu
c3VmZml4ZXMgPT0gYi5zdWZmaXhlcyAmJiBhLnBsdWdpbkluZGV4ID09IGIucGx1Z2luSW5kZXg7
Cit9CisKK3N0cnVjdCBQbHVnaW5JbmZvIHsKKyAgICBTdHJpbmcgbmFtZTsKKyAgICBTdHJpbmcg
ZmlsZTsKKyAgICBTdHJpbmcgZGVzYzsKKyAgICBWZWN0b3I8TWltZUNsYXNzSW5mbz4gbWltZXM7
Cit9OworCisvLyBGSVhNRTogbWVyZ2Ugd2l0aCBQbHVnaW5EYXRhYmFzZSBpbiB0aGUgZnV0dXJl
CitjbGFzcyBQbHVnaW5EYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8UGx1Z2luRGF0YT4geworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpbkRhdGE+IGNyZWF0ZShjb25zdCBQYWdl
KiBwYWdlKSB7IHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luRGF0YShwYWdlKSk7IH0KKyAgICB+
UGx1Z2luRGF0YSgpOworCisgICAgdm9pZCBkaXNjb25uZWN0UGFnZSgpIHsgbV9wYWdlID0gMDsg
fQorICAgIGNvbnN0IFBhZ2UqIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7IH0KKworICAg
IGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZvPiYgcGx1Z2lucygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1
Z2luczsgfQorICAgIGNvbnN0IFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiYgbWltZXMoKSBjb25zdCB7
IHJldHVybiBtX21pbWVzOyB9CisKKyAgICBib29sIHN1cHBvcnRzTWltZVR5cGUoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkgY29uc3Q7CisgICAgU3RyaW5nIHBsdWdpbk5hbWVGb3JNaW1lVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdDsKKworICAgIHN0YXRpYyB2b2lkIHJlZnJlc2go
KTsKKworcHJpdmF0ZToKKyAgICBQbHVnaW5EYXRhKGNvbnN0IFBhZ2UqKTsKKyAgICB2b2lkIGlu
aXRQbHVnaW5zKCk7CisKKyAgICBWZWN0b3I8UGx1Z2luSW5mbz4gbV9wbHVnaW5zOworICAgIFZl
Y3RvcjxNaW1lQ2xhc3NJbmZvPiBtX21pbWVzOworICAgIGNvbnN0IFBhZ2UqIG1fcGFnZTsKK307
CiAKIH0KIApJbmRleDogV2ViQ29yZS9wbHVnaW5zL2Nocm9taXVtL1BsdWdpbkRhdGFDaHJvbWl1
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL2Nocm9taXVtL1BsdWdpbkRhdGFD
aHJvbWl1bS5jcHAJKHJldmlzaW9uIDYwMjQ1KQorKysgV2ViQ29yZS9wbHVnaW5zL2Nocm9taXVt
L1BsdWdpbkRhdGFDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDIzICszNSw2IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFBsdWdpbkluZm8qIGNsb25lKGNvbnN0
IFBsdWdpbkluZm8qIGluZm8pCi17Ci0gICAgUGx1Z2luSW5mbyogcmVzdWx0ID0gbmV3IFBsdWdp
bkluZm8oKTsKLSAgICByZXN1bHQtPm5hbWUgPSBpbmZvLT5uYW1lOwotICAgIHJlc3VsdC0+ZGVz
YyA9IGluZm8tPmRlc2M7Ci0gICAgcmVzdWx0LT5maWxlID0gaW5mby0+ZmlsZTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGluZm8tPm1pbWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIE1p
bWVDbGFzc0luZm8qIG1pbWUgPSBuZXcgTWltZUNsYXNzSW5mbygpOwotICAgICAgICBtaW1lLT50
eXBlID0gaW5mby0+bWltZXNbaV0tPnR5cGU7Ci0gICAgICAgIG1pbWUtPmRlc2MgPSBpbmZvLT5t
aW1lc1tpXS0+ZGVzYzsKLSAgICAgICAgbWltZS0+c3VmZml4ZXMgPSBpbmZvLT5taW1lc1tpXS0+
c3VmZml4ZXM7Ci0gICAgICAgIG1pbWUtPnBsdWdpbiA9IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0
LT5taW1lcy5hcHBlbmQobWltZSk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIGNs
YXNzIFBsdWdpbkNhY2hlIHsKIHB1YmxpYzoKICAgICBQbHVnaW5DYWNoZSgpIDogbV9sb2FkZWQo
ZmFsc2UpLCBtX3JlZnJlc2goZmFsc2UpIHt9CkBAIC01OSwxNSArNDIsMTIgQEAgcHVibGljOgog
CiAgICAgdm9pZCByZXNldChib29sIHJlZnJlc2gpCiAgICAgewotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fcGx1Z2lucy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGRlbGV0ZUFs
bFZhbHVlcyhtX3BsdWdpbnNbaV0tPm1pbWVzKTsKLSAgICAgICAgZGVsZXRlQWxsVmFsdWVzKG1f
cGx1Z2lucyk7CiAgICAgICAgIG1fcGx1Z2lucy5jbGVhcigpOwogICAgICAgICBtX2xvYWRlZCA9
IGZhbHNlOwogICAgICAgICBtX3JlZnJlc2ggPSByZWZyZXNoOwogICAgIH0KIAotICAgIGNvbnN0
IFZlY3RvcjxQbHVnaW5JbmZvKj4mIHBsdWdpbnMoKQorICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5J
bmZvPiYgcGx1Z2lucygpCiAgICAgewogICAgICAgICBpZiAoIW1fbG9hZGVkKSB7CiAgICAgICAg
ICAgICBDaHJvbWl1bUJyaWRnZTo6cGx1Z2lucyhtX3JlZnJlc2gsICZtX3BsdWdpbnMpOwpAQCAt
NzgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFZlY3RvcjxQbHVn
aW5JbmZvKj4gbV9wbHVnaW5zOworICAgIFZlY3RvcjxQbHVnaW5JbmZvPiBtX3BsdWdpbnM7CiAg
ICAgYm9vbCBtX2xvYWRlZDsKICAgICBib29sIG1fcmVmcmVzaDsKIH07CkBAIC04Nyw5ICs2Nyw5
IEBAIHN0YXRpYyBQbHVnaW5DYWNoZSBwbHVnaW5DYWNoZTsKIAogdm9pZCBQbHVnaW5EYXRhOjpp
bml0UGx1Z2lucygpCiB7Ci0gICAgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8qPiYgcGx1Z2lucyA9
IHBsdWdpbkNhY2hlLnBsdWdpbnMoKTsKKyAgICBjb25zdCBWZWN0b3I8UGx1Z2luSW5mbz4mIHBs
dWdpbnMgPSBwbHVnaW5DYWNoZS5wbHVnaW5zKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBwbHVnaW5zLnNpemUoKTsgKytpKQotICAgICAgICBtX3BsdWdpbnMuYXBwZW5kKGNsb25lKHBs
dWdpbnNbaV0pKTsKKyAgICAgICAgbV9wbHVnaW5zLmFwcGVuZChwbHVnaW5zW2ldKTsKIH0KIAog
dm9pZCBQbHVnaW5EYXRhOjpyZWZyZXNoKCkKQEAgLTEwMCwxNSArODAsMTUgQEAgdm9pZCBQbHVn
aW5EYXRhOjpyZWZyZXNoKCkKIAogU3RyaW5nIGdldFBsdWdpbk1pbWVUeXBlRnJvbUV4dGVuc2lv
bihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKIHsKLSAgICBjb25zdCBWZWN0b3I8UGx1Z2luSW5m
byo+JiBwbHVnaW5zID0gcGx1Z2luQ2FjaGUucGx1Z2lucygpOworICAgIGNvbnN0IFZlY3RvcjxQ
bHVnaW5JbmZvPiYgcGx1Z2lucyA9IHBsdWdpbkNhY2hlLnBsdWdpbnMoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgZm9yIChzaXpl
X3QgaiA9IDA7IGogPCBwbHVnaW5zW2ldLT5taW1lcy5zaXplKCk7ICsraikgewotICAgICAgICAg
ICAgTWltZUNsYXNzSW5mbyogbWltZSA9IHBsdWdpbnNbaV0tPm1pbWVzW2pdOworICAgICAgICBm
b3IgKHNpemVfdCBqID0gMDsgaiA8IHBsdWdpbnNbaV0ubWltZXMuc2l6ZSgpOyArK2opIHsKKyAg
ICAgICAgICAgIGNvbnN0IE1pbWVDbGFzc0luZm8mIG1pbWUgPSBwbHVnaW5zW2ldLm1pbWVzW2pd
OwogICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9uczsKLSAgICAgICAgICAgIG1p
bWUtPnN1ZmZpeGVzLnNwbGl0KCIsIiwgZXh0ZW5zaW9ucyk7CisgICAgICAgICAgICBtaW1lLnN1
ZmZpeGVzLnNwbGl0KCIsIiwgZXh0ZW5zaW9ucyk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBr
ID0gMDsgayA8IGV4dGVuc2lvbnMuc2l6ZSgpOyArK2spIHsKICAgICAgICAgICAgICAgICBpZiAo
ZXh0ZW5zaW9uID09IGV4dGVuc2lvbnNba10pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBt
aW1lLT50eXBlOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWltZS50eXBlOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQpJbmRleDogV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVn
aW5EYXRhR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpbkRh
dGFHdGsuY3BwCShyZXZpc2lvbiA2MDI0NSkKKysrIFdlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2lu
RGF0YUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDMwICszMywzMCBAQCB2b2lkIFBsdWdp
bkRhdGE6OmluaXRQbHVnaW5zKCkKICAgICBjb25zdCBWZWN0b3I8UGx1Z2luUGFja2FnZSo+ICZw
bHVnaW5zID0gZGItPnBsdWdpbnMoKTsKIAogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgcGx1Z2lucy5zaXplKCk7ICsraSkgewotICAgICAgICBQbHVnaW5JbmZvKiBpbmZvID0gbmV3
IFBsdWdpbkluZm87CisgICAgICAgIFBsdWdpbkluZm8gaW5mbzsKICAgICAgICAgUGx1Z2luUGFj
a2FnZSogcGFja2FnZSA9IHBsdWdpbnNbaV07CiAKLSAgICAgICAgaW5mby0+bmFtZSA9IHBhY2th
Z2UtPm5hbWUoKTsKLSAgICAgICAgaW5mby0+ZmlsZSA9IHBhY2thZ2UtPmZpbGVOYW1lKCk7Ci0g
ICAgICAgIGluZm8tPmRlc2MgPSBwYWNrYWdlLT5kZXNjcmlwdGlvbigpOworICAgICAgICBpbmZv
Lm5hbWUgPSBwYWNrYWdlLT5uYW1lKCk7CisgICAgICAgIGluZm8uZmlsZSA9IHBhY2thZ2UtPmZp
bGVOYW1lKCk7CisgICAgICAgIGluZm8uZGVzYyA9IHBhY2thZ2UtPmRlc2NyaXB0aW9uKCk7CiAK
ICAgICAgICAgY29uc3QgTUlNRVRvRGVzY3JpcHRpb25zTWFwJiBtaW1lVG9EZXNjcmlwdGlvbnMg
PSBwYWNrYWdlLT5taW1lVG9EZXNjcmlwdGlvbnMoKTsKICAgICAgICAgTUlNRVRvRGVzY3JpcHRp
b25zTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtaW1lVG9EZXNjcmlwdGlvbnMuZW5kKCk7CiAg
ICAgICAgIGZvciAoTUlNRVRvRGVzY3JpcHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1p
bWVUb0Rlc2NyaXB0aW9ucy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAg
IE1pbWVDbGFzc0luZm8qIG1pbWUgPSBuZXcgTWltZUNsYXNzSW5mbzsKLSAgICAgICAgICAgIGlu
Zm8tPm1pbWVzLmFwcGVuZChtaW1lKTsKKyAgICAgICAgICAgIE1pbWVDbGFzc0luZm8gbWltZTsK
IAotICAgICAgICAgICAgbWltZS0+dHlwZSA9IGl0LT5maXJzdDsKLSAgICAgICAgICAgIG1pbWUt
PmRlc2MgPSBpdC0+c2Vjb25kOwotICAgICAgICAgICAgbWltZS0+cGx1Z2luID0gaW5mbzsKKyAg
ICAgICAgICAgIG1pbWUudHlwZSA9IGl0LT5maXJzdDsKKyAgICAgICAgICAgIG1pbWUuZGVzYyA9
IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICBtaW1lLnBsdWdpbkluZGV4ID0gbV9wbHVnaW5zLnNp
emUoKTsKKyAgICAgICAgICAgIGluZm8ubWltZXMuYXBwZW5kKG1pbWUpOwogCi0gICAgICAgICAg
ICBWZWN0b3I8U3RyaW5nPiBleHRlbnNpb25zID0gcGFja2FnZS0+bWltZVRvRXh0ZW5zaW9ucygp
LmdldChtaW1lLT50eXBlKTsKKyAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbnMg
PSBwYWNrYWdlLT5taW1lVG9FeHRlbnNpb25zKCkuZ2V0KG1pbWUudHlwZSk7CiAKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleHRlbnNpb25zLnNpemUoKTsgaSsrKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGkgPiAwKQotICAgICAgICAgICAgICAgICAgICBtaW1lLT5zdWZm
aXhlcyArPSAiLCI7CisgICAgICAgICAgICAgICAgICAgIG1pbWUuc3VmZml4ZXMgKz0gIiwiOwog
Ci0gICAgICAgICAgICAgICAgbWltZS0+c3VmZml4ZXMgKz0gZXh0ZW5zaW9uc1tpXTsKKyAgICAg
ICAgICAgICAgICBtaW1lLnN1ZmZpeGVzICs9IGV4dGVuc2lvbnNbaV07CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIApJbmRleDogV2ViQ29yZS9wbHVnaW5zL21hYy9QbHVnaW5EYXRhTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luRGF0YU1hYy5tbQkocmV2
aXNpb24gNjAyNDUpCisrKyBXZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpbkRhdGFNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTM5LDIyICszOSwyNCBAQCB2b2lkIFBsdWdpbkRhdGE6OmluaXRQbHVn
aW5zKCkKIAogICAgIE5TQXJyYXkqIHBsdWdpbnMgPSBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFy
ZWRGYWN0b3J5XSBwbHVnaW5zSW5mb107CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCBbcGx1Z2lucyBjb3VudF07ICsraSkgewotICAgICAgICBQbHVnaW5JbmZvKiBwbHVnaW5JbmZv
ID0gbmV3IFBsdWdpbkluZm87CisgICAgICAgIFBsdWdpbkluZm8gcGx1Z2luSW5mbzsKIAogICAg
ICAgICBpZCA8V2ViQ29yZVBsdWdpbkluZm8+IHBsdWdpbiA9IFtwbHVnaW5zIG9iamVjdEF0SW5k
ZXg6aV07CiAgICAgCi0gICAgICAgIHBsdWdpbkluZm8tPm5hbWUgPSBbcGx1Z2luIG5hbWVdOwot
ICAgICAgICBwbHVnaW5JbmZvLT5maWxlID0gW3BsdWdpbiBmaWxlbmFtZV07Ci0gICAgICAgIHBs
dWdpbkluZm8tPmRlc2MgPSBbcGx1Z2luIHBsdWdpbkRlc2NyaXB0aW9uXTsKKyAgICAgICAgcGx1
Z2luSW5mby5uYW1lID0gW3BsdWdpbiBuYW1lXTsKKyAgICAgICAgcGx1Z2luSW5mby5maWxlID0g
W3BsdWdpbiBmaWxlbmFtZV07CisgICAgICAgIHBsdWdpbkluZm8uZGVzYyA9IFtwbHVnaW4gcGx1
Z2luRGVzY3JpcHRpb25dOwogCiAgICAgICAgIE5TRW51bWVyYXRvciogTUlNRVR5cGVFbnVtZXJh
dG9yID0gW3BsdWdpbiBNSU1FVHlwZUVudW1lcmF0b3JdOwogICAgICAgICB3aGlsZSAoTlNTdHJp
bmcqIE1JTUUgPSBbTUlNRVR5cGVFbnVtZXJhdG9yIG5leHRPYmplY3RdKSB7Ci0gICAgICAgICAg
ICBNaW1lQ2xhc3NJbmZvKiBtaW1lID0gbmV3IE1pbWVDbGFzc0luZm87Ci0gICAgICAgICAgICBw
bHVnaW5JbmZvLT5taW1lcy5hcHBlbmQobWltZSk7Ci0gICAgICAgICAgICBtaW1lLT50eXBlID0g
U3RyaW5nKE1JTUUpLmxvd2VyKCk7Ci0gICAgICAgICAgICBtaW1lLT5zdWZmaXhlcyA9IFtbcGx1
Z2luIGV4dGVuc2lvbnNGb3JNSU1FVHlwZTpNSU1FXSBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6
QCIsIl07Ci0gICAgICAgICAgICBtaW1lLT5kZXNjID0gW3BsdWdpbiBkZXNjcmlwdGlvbkZvck1J
TUVUeXBlOk1JTUVdOwotICAgICAgICAgICAgbWltZS0+cGx1Z2luID0gcGx1Z2luSW5mbzsKKyAg
ICAgICAgICAgIE1pbWVDbGFzc0luZm8gbWltZTsKKworICAgICAgICAgICAgbWltZS50eXBlID0g
U3RyaW5nKE1JTUUpLmxvd2VyKCk7CisgICAgICAgICAgICBtaW1lLnN1ZmZpeGVzID0gW1twbHVn
aW4gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlOk1JTUVdIGNvbXBvbmVudHNKb2luZWRCeVN0cmluZzpA
IiwiXTsKKyAgICAgICAgICAgIG1pbWUuZGVzYyA9IFtwbHVnaW4gZGVzY3JpcHRpb25Gb3JNSU1F
VHlwZTpNSU1FXTsKKyAgICAgICAgICAgIG1pbWUucGx1Z2luSW5kZXggPSBtX3BsdWdpbnMuc2l6
ZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBwbHVnaW5JbmZvLm1pbWVzLmFwcGVuZCht
aW1lKTsKICAgICAgICAgfQogCiAgICAgICAgIG1fcGx1Z2lucy5hcHBlbmQocGx1Z2luSW5mbyk7
CkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luRGF0YVF0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luRGF0YVF0LmNwcAkocmV2aXNpb24gNjAyNDUpCisr
KyBXZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luRGF0YVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDIsMTkgKzQyLDIwIEBAIHZvaWQgUGx1Z2luRGF0YTo6aW5pdFBsdWdpbnMoKQogICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IHFwbHVnaW5zLmNvdW50KCk7ICsraSkgewogICAgICAgICAgICAg
Y29uc3QgUVdlYlBsdWdpbkZhY3Rvcnk6OlBsdWdpbiYgcXBsdWdpbiA9IHFwbHVnaW5zLmF0KGkp
OwogCi0gICAgICAgICAgICBQbHVnaW5JbmZvKiBpbmZvID0gbmV3IFBsdWdpbkluZm87Ci0gICAg
ICAgICAgICBpbmZvLT5uYW1lID0gcXBsdWdpbi5uYW1lOwotICAgICAgICAgICAgaW5mby0+ZGVz
YyA9IHFwbHVnaW4uZGVzY3JpcHRpb247CisgICAgICAgICAgICBQbHVnaW5JbmZvIGluZm87Cisg
ICAgICAgICAgICBpbmZvLm5hbWUgPSBxcGx1Z2luLm5hbWU7CisgICAgICAgICAgICBpbmZvLmRl
c2MgPSBxcGx1Z2luLmRlc2NyaXB0aW9uOwogCiAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsg
aiA8IHFwbHVnaW4ubWltZVR5cGVzLmNvdW50KCk7ICsraikgewogICAgICAgICAgICAgICAgIGNv
bnN0IFFXZWJQbHVnaW5GYWN0b3J5OjpNaW1lVHlwZSYgbWltZVR5cGUgPSBxcGx1Z2luLm1pbWVU
eXBlcy5hdChqKTsKIAotICAgICAgICAgICAgICAgIE1pbWVDbGFzc0luZm8qIG1pbWVJbmZvID0g
bmV3IE1pbWVDbGFzc0luZm87Ci0gICAgICAgICAgICAgICAgbWltZUluZm8tPnR5cGUgPSBtaW1l
VHlwZS5uYW1lOwotICAgICAgICAgICAgICAgIG1pbWVJbmZvLT5kZXNjID0gbWltZVR5cGUuZGVz
Y3JpcHRpb247Ci0gICAgICAgICAgICAgICAgbWltZUluZm8tPnN1ZmZpeGVzID0gbWltZVR5cGUu
ZmlsZUV4dGVuc2lvbnMuam9pbihRTGF0aW4xU3RyaW5nKCI7ICIpKTsKKyAgICAgICAgICAgICAg
ICBNaW1lQ2xhc3NJbmZvIG1pbWVJbmZvOworICAgICAgICAgICAgICAgIG1pbWVJbmZvLnR5cGUg
PSBtaW1lVHlwZS5uYW1lOworICAgICAgICAgICAgICAgIG1pbWVJbmZvLmRlc2MgPSBtaW1lVHlw
ZS5kZXNjcmlwdGlvbjsKKyAgICAgICAgICAgICAgICBtaW1lSW5mby5zdWZmaXhlcyA9IG1pbWVU
eXBlLmZpbGVFeHRlbnNpb25zLmpvaW4oUUxhdGluMVN0cmluZygiOyAiKSk7CisgICAgICAgICAg
ICAgICAgbWltZUluZm8ucGx1Z2luSW5kZXggPSBtX3BsdWdpbnMuc2l6ZSgpOwogCi0gICAgICAg
ICAgICAgICAgaW5mby0+bWltZXMuYXBwZW5kKG1pbWVJbmZvKTsKKyAgICAgICAgICAgICAgICBp
bmZvLm1pbWVzLmFwcGVuZChtaW1lSW5mbyk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IG1fcGx1Z2lucy5hcHBlbmQoaW5mbyk7CkBAIC02NSwzMCArNjYsMzAgQEAgdm9pZCBQbHVnaW5E
YXRhOjppbml0UGx1Z2lucygpCiAgICAgY29uc3QgVmVjdG9yPFBsdWdpblBhY2thZ2UqPiAmcGx1
Z2lucyA9IGRiLT5wbHVnaW5zKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IHBsdWdpbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgUGx1Z2luSW5mbyogaW5mbyA9IG5ldyBQ
bHVnaW5JbmZvOworICAgICAgICBQbHVnaW5JbmZvIGluZm87CiAgICAgICAgIFBsdWdpblBhY2th
Z2UqIHBhY2thZ2UgPSBwbHVnaW5zW2ldOwogCi0gICAgICAgIGluZm8tPm5hbWUgPSBwYWNrYWdl
LT5uYW1lKCk7Ci0gICAgICAgIGluZm8tPmZpbGUgPSBwYWNrYWdlLT5maWxlTmFtZSgpOwotICAg
ICAgICBpbmZvLT5kZXNjID0gcGFja2FnZS0+ZGVzY3JpcHRpb24oKTsKKyAgICAgICAgaW5mby5u
YW1lID0gcGFja2FnZS0+bmFtZSgpOworICAgICAgICBpbmZvLmZpbGUgPSBwYWNrYWdlLT5maWxl
TmFtZSgpOworICAgICAgICBpbmZvLmRlc2MgPSBwYWNrYWdlLT5kZXNjcmlwdGlvbigpOwogCiAg
ICAgICAgIGNvbnN0IE1JTUVUb0Rlc2NyaXB0aW9uc01hcCYgbWltZVRvRGVzY3JpcHRpb25zID0g
cGFja2FnZS0+bWltZVRvRGVzY3JpcHRpb25zKCk7CiAgICAgICAgIE1JTUVUb0Rlc2NyaXB0aW9u
c01hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWltZVRvRGVzY3JpcHRpb25zLmVuZCgpOwogICAg
ICAgICBmb3IgKE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtaW1l
VG9EZXNjcmlwdGlvbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBN
aW1lQ2xhc3NJbmZvKiBtaW1lID0gbmV3IE1pbWVDbGFzc0luZm87Ci0gICAgICAgICAgICBpbmZv
LT5taW1lcy5hcHBlbmQobWltZSk7CisgICAgICAgICAgICBNaW1lQ2xhc3NJbmZvIG1pbWU7Cisg
ICAgICAgICAgICBpbmZvLm1pbWVzLmFwcGVuZChtaW1lKTsKIAotICAgICAgICAgICAgbWltZS0+
dHlwZSA9IGl0LT5maXJzdDsKLSAgICAgICAgICAgIG1pbWUtPmRlc2MgPSBpdC0+c2Vjb25kOwot
ICAgICAgICAgICAgbWltZS0+cGx1Z2luID0gaW5mbzsKKyAgICAgICAgICAgIG1pbWUudHlwZSA9
IGl0LT5maXJzdDsKKyAgICAgICAgICAgIG1pbWUuZGVzYyA9IGl0LT5zZWNvbmQ7CisgICAgICAg
ICAgICBtaW1lLnBsdWdpbkluZGV4ID0gbV9wbHVnaW5zLnNpemUoKTsKIAotICAgICAgICAgICAg
VmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9ucyA9IHBhY2thZ2UtPm1pbWVUb0V4dGVuc2lvbnMoKS5n
ZXQobWltZS0+dHlwZSk7CisgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBleHRlbnNpb25zID0g
cGFja2FnZS0+bWltZVRvRXh0ZW5zaW9ucygpLmdldChtaW1lLnR5cGUpOwogCiAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXh0ZW5zaW9ucy5zaXplKCk7IGkrKykgewogICAg
ICAgICAgICAgICAgIGlmIChpID4gMCkKLSAgICAgICAgICAgICAgICAgICAgbWltZS0+c3VmZml4
ZXMgKz0gIiwiOworICAgICAgICAgICAgICAgICAgICBtaW1lLnN1ZmZpeGVzICs9ICIsIjsKIAot
ICAgICAgICAgICAgICAgIG1pbWUtPnN1ZmZpeGVzICs9IGV4dGVuc2lvbnNbaV07CisgICAgICAg
ICAgICAgICAgbWltZS5zdWZmaXhlcyArPSBleHRlbnNpb25zW2ldOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luRGF0YVdpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhV2luLmNwcAkocmV2
aXNpb24gNjAyNDUpCisrKyBXZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpbkRhdGFXaW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiwzMSArMzIsMzMgQEAgdm9pZCBQbHVnaW5EYXRhOjppbml0UGx1
Z2lucygpCiAgICAgY29uc3QgVmVjdG9yPFBsdWdpblBhY2thZ2UqPiAmcGx1Z2lucyA9IGRiLT5w
bHVnaW5zKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgUGx1Z2luSW5mbyogaW5mbyA9IG5ldyBQbHVnaW5JbmZvOwog
ICAgICAgICBQbHVnaW5QYWNrYWdlKiBwYWNrYWdlID0gcGx1Z2luc1tpXTsKIAotICAgICAgICBp
bmZvLT5uYW1lID0gcGFja2FnZS0+bmFtZSgpOwotICAgICAgICBpbmZvLT5maWxlID0gcGFja2Fn
ZS0+ZmlsZU5hbWUoKTsKLSAgICAgICAgaW5mby0+ZGVzYyA9IHBhY2thZ2UtPmRlc2NyaXB0aW9u
KCk7CisgICAgICAgIFBsdWdpbkluZm8gaW5mbzsKKyAgICAgICAgaW5mby5uYW1lID0gcGFja2Fn
ZS0+bmFtZSgpOworICAgICAgICBpbmZvLmZpbGUgPSBwYWNrYWdlLT5maWxlTmFtZSgpOworICAg
ICAgICBpbmZvLmRlc2MgPSBwYWNrYWdlLT5kZXNjcmlwdGlvbigpOwogCiAgICAgICAgIGNvbnN0
IE1JTUVUb0Rlc2NyaXB0aW9uc01hcCYgbWltZVRvRGVzY3JpcHRpb25zID0gcGFja2FnZS0+bWlt
ZVRvRGVzY3JpcHRpb25zKCk7CiAgICAgICAgIE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gbWltZVRvRGVzY3JpcHRpb25zLmVuZCgpOwogICAgICAgICBmb3IgKE1J
TUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtaW1lVG9EZXNjcmlwdGlv
bnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBNaW1lQ2xhc3NJbmZv
KiBtaW1lID0gbmV3IE1pbWVDbGFzc0luZm87Ci0gICAgICAgICAgICBpbmZvLT5taW1lcy5hcHBl
bmQobWltZSk7CisgICAgICAgICAgICBNaW1lQ2xhc3NJbmZvIG1pbWU7CiAKLSAgICAgICAgICAg
IG1pbWUtPnR5cGUgPSBpdC0+Zmlyc3Q7Ci0gICAgICAgICAgICBtaW1lLT5kZXNjID0gaXQtPnNl
Y29uZDsKLSAgICAgICAgICAgIG1pbWUtPnBsdWdpbiA9IGluZm87CisgICAgICAgICAgICBtaW1l
LnR5cGUgPSBpdC0+Zmlyc3Q7CisgICAgICAgICAgICBtaW1lLmRlc2MgPSBpdC0+c2Vjb25kOwor
ICAgICAgICAgICAgbWltZS5wbHVnaW5JbmRleCA9IG1fcGx1Z2lucy5zaXplKCk7CiAKLSAgICAg
ICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbnMgPSBwYWNrYWdlLT5taW1lVG9FeHRlbnNp
b25zKCkuZ2V0KG1pbWUtPnR5cGUpOworICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZXh0ZW5z
aW9ucyA9IHBhY2thZ2UtPm1pbWVUb0V4dGVuc2lvbnMoKS5nZXQobWltZS50eXBlKTsKIAogICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4dGVuc2lvbnMuc2l6ZSgpOyBpKysp
IHsKICAgICAgICAgICAgICAgICBpZiAoaSA+IDApCi0gICAgICAgICAgICAgICAgICAgIG1pbWUt
PnN1ZmZpeGVzICs9ICIsIjsKKyAgICAgICAgICAgICAgICAgICAgbWltZS5zdWZmaXhlcyArPSAi
LCI7CiAKLSAgICAgICAgICAgICAgICBtaW1lLT5zdWZmaXhlcyArPSBleHRlbnNpb25zW2ldOwor
ICAgICAgICAgICAgICAgIG1pbWUuc3VmZml4ZXMgKz0gZXh0ZW5zaW9uc1tpXTsKICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaW5mby5taW1lcy5hcHBlbmQobWltZSk7CisKICAgICAgICAg
fQogCiAgICAgICAgIG1fcGx1Z2lucy5hcHBlbmQoaW5mbyk7CkluZGV4OiBXZWJDb3JlL3BsdWdp
bnMvd3gvUGx1Z2luRGF0YVd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMvd3gv
UGx1Z2luRGF0YVd4LmNwcAkocmV2aXNpb24gNjAyNDUpCisrKyBXZWJDb3JlL3BsdWdpbnMvd3gv
UGx1Z2luRGF0YVd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMzEgKzM5LDMyIEBAIHZvaWQg
UGx1Z2luRGF0YTo6aW5pdFBsdWdpbnMoKQogICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5QYWNrYWdl
Kj4gJnBsdWdpbnMgPSBkYi0+cGx1Z2lucygpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCBwbHVnaW5zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFBsdWdpbkluZm8qIGluZm8g
PSBuZXcgUGx1Z2luSW5mbzsKKyAgICAgICAgUGx1Z2luSW5mbyBpbmZvOwogICAgICAgICBQbHVn
aW5QYWNrYWdlKiBwYWNrYWdlID0gcGx1Z2luc1tpXTsKIAotICAgICAgICBpbmZvLT5uYW1lID0g
cGFja2FnZS0+bmFtZSgpOwotICAgICAgICBpbmZvLT5maWxlID0gcGFja2FnZS0+ZmlsZU5hbWUo
KTsKLSAgICAgICAgaW5mby0+ZGVzYyA9IHBhY2thZ2UtPmRlc2NyaXB0aW9uKCk7CisgICAgICAg
IGluZm8ubmFtZSA9IHBhY2thZ2UtPm5hbWUoKTsKKyAgICAgICAgaW5mby5maWxlID0gcGFja2Fn
ZS0+ZmlsZU5hbWUoKTsKKyAgICAgICAgaW5mby5kZXNjID0gcGFja2FnZS0+ZGVzY3JpcHRpb24o
KTsKIAogICAgICAgICBjb25zdCBNSU1FVG9EZXNjcmlwdGlvbnNNYXAmIG1pbWVUb0Rlc2NyaXB0
aW9ucyA9IHBhY2thZ2UtPm1pbWVUb0Rlc2NyaXB0aW9ucygpOwogICAgICAgICBNSU1FVG9EZXNj
cmlwdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5lbmQo
KTsKICAgICAgICAgZm9yIChNSU1FVG9EZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbWltZVRvRGVzY3JpcHRpb25zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAg
ICAgICAgTWltZUNsYXNzSW5mbyogbWltZSA9IG5ldyBNaW1lQ2xhc3NJbmZvOwotICAgICAgICAg
ICAgaW5mby0+bWltZXMuYXBwZW5kKG1pbWUpOworICAgICAgICAgICAgTWltZUNsYXNzSW5mbyBt
aW1lOwogCi0gICAgICAgICAgICBtaW1lLT50eXBlID0gaXQtPmZpcnN0OwotICAgICAgICAgICAg
bWltZS0+ZGVzYyA9IGl0LT5zZWNvbmQ7Ci0gICAgICAgICAgICBtaW1lLT5wbHVnaW4gPSBpbmZv
OworICAgICAgICAgICAgbWltZS50eXBlID0gaXQtPmZpcnN0OworICAgICAgICAgICAgbWltZS5k
ZXNjID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIG1pbWUucGx1Z2luSW5kZXggPSBtX3BsdWdp
bnMuc2l6ZSgpOwogCi0gICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBleHRlbnNpb25zID0gcGFj
a2FnZS0+bWltZVRvRXh0ZW5zaW9ucygpLmdldChtaW1lLT50eXBlKTsKKyAgICAgICAgICAgIFZl
Y3RvcjxTdHJpbmc+IGV4dGVuc2lvbnMgPSBwYWNrYWdlLT5taW1lVG9FeHRlbnNpb25zKCkuZ2V0
KG1pbWUudHlwZSk7CiAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleHRl
bnNpb25zLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgaWYgKGkgPiAwKQotICAgICAg
ICAgICAgICAgICAgICBtaW1lLT5zdWZmaXhlcyArPSAiLCI7CisgICAgICAgICAgICAgICAgICAg
IG1pbWUuc3VmZml4ZXMgKz0gIiwiOwogCi0gICAgICAgICAgICAgICAgbWltZS0+c3VmZml4ZXMg
Kz0gZXh0ZW5zaW9uc1tpXTsKKyAgICAgICAgICAgICAgICBtaW1lLnN1ZmZpeGVzICs9IGV4dGVu
c2lvbnNbaV07CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGluZm8u
bWltZXMuYXBwZW5kKG1pbWUpOwogICAgICAgICB9CiAKICAgICAgICAgbV9wbHVnaW5zLmFwcGVu
ZChpbmZvKTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjAyNDUpCisrKyBXZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDUt
MjYgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGVhbiB1cCBNaW1lQ2xhc3NJbmZv
IGFuZCBQbHVnaW5JbmZvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zOTcwMAorCisgICAgICAgIFVwZGF0ZSBmb3IgV2ViQ29yZSBjaGFuZ2VzLgorCisg
ICAgICAgICogc3JjL1dlYlBsdWdpbkxpc3RCdWlsZGVySW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsdWdpbkxpc3RCdWlsZGVySW1wbDo6YWRkUGx1Z2luKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsOjphZGRNZWRpYVR5cGVUb0xhc3RQbHVnaW4pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5MaXN0QnVpbGRlckltcGw6OmFkZEZpbGVFeHRlbnNp
b25Ub0xhc3RNZWRpYVR5cGUpOgorICAgICAgICAqIHNyYy9XZWJQbHVnaW5MaXN0QnVpbGRlcklt
cGwuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsOjpXZWJQbHVn
aW5MaXN0QnVpbGRlckltcGwpOgorCiAyMDEwLTA1LTI2ICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgY2hyb21pdW0gYnVpbGQgZml4Cklu
ZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9taXVtQnJpZGdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9taXVtQnJpZGdlLmNwcAkocmV2aXNpb24gNjAyNDUp
CisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9taXVtQnJpZGdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTA1LDcgKzUwNSw3IEBAIFN0cmluZyBDaHJvbWl1bUJyaWRnZTo6cHJlZmVycmVkRXh0
ZW5zaW8KIAogLy8gUGx1Z2luIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1ib29sIENocm9taXVtQnJpZGdlOjpw
bHVnaW5zKGJvb2wgcmVmcmVzaCwgVmVjdG9yPFBsdWdpbkluZm8qPiogcmVzdWx0cykKK2Jvb2wg
Q2hyb21pdW1CcmlkZ2U6OnBsdWdpbnMoYm9vbCByZWZyZXNoLCBWZWN0b3I8UGx1Z2luSW5mbz4q
IHJlc3VsdHMpCiB7CiAgICAgV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsIGJ1aWxkZXIocmVzdWx0
cyk7CiAgICAgd2ViS2l0Q2xpZW50KCktPmdldFBsdWdpbkxpc3QocmVmcmVzaCwgJmJ1aWxkZXIp
OwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5MaXN0QnVpbGRlckltcGwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luTGlzdEJ1aWxkZXJJ
bXBsLmNwcAkocmV2aXNpb24gNjAyNDUpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdp
bkxpc3RCdWlsZGVySW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDI3ICs0MSwyNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBXZWJQbHVnaW5MaXN0QnVpbGRlckltcGw6OmFkZFBs
dWdpbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgZGVzY3JpcHRpb24s
IGNvbnN0IFdlYlN0cmluZyYgZmlsZU5hbWUpCiB7Ci0gICAgUGx1Z2luSW5mbyogaW5mbyA9IG5l
dyBQbHVnaW5JbmZvKCk7Ci0gICAgaW5mby0+bmFtZSA9IG5hbWU7Ci0gICAgaW5mby0+ZGVzYyA9
IGRlc2NyaXB0aW9uOwotICAgIGluZm8tPmZpbGUgPSBmaWxlTmFtZTsKKyAgICBQbHVnaW5JbmZv
IGluZm87CisgICAgaW5mby5uYW1lID0gbmFtZTsKKyAgICBpbmZvLmRlc2MgPSBkZXNjcmlwdGlv
bjsKKyAgICBpbmZvLmZpbGUgPSBmaWxlTmFtZTsKICAgICBtX3Jlc3VsdHMtPmFwcGVuZChpbmZv
KTsKIH0KIAogdm9pZCBXZWJQbHVnaW5MaXN0QnVpbGRlckltcGw6OmFkZE1lZGlhVHlwZVRvTGFz
dFBsdWdpbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgZGVzY3JpcHRp
b24pCiB7Ci0gICAgTWltZUNsYXNzSW5mbyogaW5mbyA9IG5ldyBNaW1lQ2xhc3NJbmZvKCk7Ci0g
ICAgaW5mby0+dHlwZSA9IG5hbWU7Ci0gICAgaW5mby0+ZGVzYyA9IGRlc2NyaXB0aW9uOwotICAg
IG1fcmVzdWx0cy0+bGFzdCgpLT5taW1lcy5hcHBlbmQoaW5mbyk7CisgICAgTWltZUNsYXNzSW5m
byBpbmZvOworICAgIGluZm8udHlwZSA9IG5hbWU7CisgICAgaW5mby5kZXNjID0gZGVzY3JpcHRp
b247CisgICAgbV9yZXN1bHRzLT5sYXN0KCkubWltZXMuYXBwZW5kKGluZm8pOwogfQogCiB2b2lk
IFdlYlBsdWdpbkxpc3RCdWlsZGVySW1wbDo6YWRkRmlsZUV4dGVuc2lvblRvTGFzdE1lZGlhVHlw
ZShjb25zdCBXZWJTdHJpbmcmIGV4dGVuc2lvbikKIHsKLSAgICBNaW1lQ2xhc3NJbmZvKiBpbmZv
ID0gbV9yZXN1bHRzLT5sYXN0KCktPm1pbWVzLmxhc3QoKTsKLSAgICBpZiAoIWluZm8tPnN1ZmZp
eGVzLmlzRW1wdHkoKSkKLSAgICAgICAgaW5mby0+c3VmZml4ZXMuYXBwZW5kKCcsJyk7Ci0gICAg
aW5mby0+c3VmZml4ZXMuYXBwZW5kKGV4dGVuc2lvbik7CisgICAgTWltZUNsYXNzSW5mbyYgaW5m
byA9IG1fcmVzdWx0cy0+bGFzdCgpLm1pbWVzLmxhc3QoKTsKKyAgICBpZiAoIWluZm8uc3VmZml4
ZXMuaXNFbXB0eSgpKQorICAgICAgICBpbmZvLnN1ZmZpeGVzLmFwcGVuZCgnLCcpOworICAgIGlu
Zm8uc3VmZml4ZXMuYXBwZW5kKGV4dGVuc2lvbik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5MaXN0QnVpbGRlckltcGwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkxpc3RCdWlsZGVySW1w
bC5oCShyZXZpc2lvbiA2MDI0NSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luTGlz
dEJ1aWxkZXJJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIFdlYlBsdWdpbkxpc3RCdWlsZGVySW1wbCA6IHB1YmxpYyBXZWJQ
bHVnaW5MaXN0QnVpbGRlciB7CiBwdWJsaWM6Ci0gICAgV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBs
KFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvKj4qIHJlc3VsdHMpIDogbV9yZXN1bHRzKHJlc3Vs
dHMpIHsgfQorICAgIFdlYlBsdWdpbkxpc3RCdWlsZGVySW1wbChWZWN0b3I8V2ViQ29yZTo6UGx1
Z2luSW5mbz4qIHJlc3VsdHMpIDogbV9yZXN1bHRzKHJlc3VsdHMpIHsgfQogCiAgICAgLy8gV2Vi
UGx1Z2luTGlzdEJ1aWxkZXIgbWV0aG9kczoKICAgICB2aXJ0dWFsIHZvaWQgYWRkUGx1Z2luKGNv
bnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3Qg
V2ViU3RyaW5nJiBmaWxlTmFtZSk7CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgYWRkRmlsZUV4dGVuc2lvblRvTGFzdE1lZGlhVHlwZShjb25zdCBXZWJTdHJpbmcm
IGV4dGVuc2lvbik7CiAKIHByaXZhdGU6Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8q
PiogbV9yZXN1bHRzOworICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiogbV9yZXN1bHRz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="41660"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>