<?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>103987</bug_id>
          
          <creation_ts>2012-12-04 02:35:17 -0800</creation_ts>
          <short_desc>[V8] Remove toV8Object()</short_desc>
          <delta_ts>2012-12-04 21:12:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>dcarney</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>japhet</cc>
    
    <cc>peter+ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>782412</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-04 02:35:17 -0800</bug_when>
    <thetext>toV8Object() is used only for MessagePort and ArrayBuffer only by SerializedScriptValue. It is wasteful to generate toV8Object() for all interfaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782415</commentid>
    <comment_count>1</comment_count>
      <attachid>177457</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-04 02:37:58 -0800</bug_when>
    <thetext>Created attachment 177457
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782437</commentid>
    <comment_count>2</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-12-04 03:18:52 -0800</bug_when>
    <thetext>You&apos;re changing the return value in WebArrayBuffer and WebBlob when m_private is 0. It may be correct to do so, but it was never like this before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782438</commentid>
    <comment_count>3</comment_count>
      <attachid>177463</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-04 03:21:34 -0800</bug_when>
    <thetext>Created attachment 177463
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782442</commentid>
    <comment_count>4</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-04 03:22:29 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; You&apos;re changing the return value in WebArrayBuffer and WebBlob when m_private is 0. It may be correct to do so, but it was never like this before.

Good point! Fixed. (Though I guess returning v8::Null() would be a correct behavior. Either way let&apos;s fix it in a follow-up patch.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782450</commentid>
    <comment_count>5</comment_count>
      <attachid>177463</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-04 03:39:41 -0800</bug_when>
    <thetext>Comment on attachment 177463
Patch

Attachment 177463 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15126592</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782453</commentid>
    <comment_count>6</comment_count>
      <attachid>177463</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-12-04 03:43:53 -0800</bug_when>
    <thetext>Comment on attachment 177463
Patch

Attachment 177463 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/15117858</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782456</commentid>
    <comment_count>7</comment_count>
      <attachid>177466</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-04 03:46:24 -0800</bug_when>
    <thetext>Created attachment 177466
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783357</commentid>
    <comment_count>8</comment_count>
      <attachid>177466</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-04 21:12:09 -0800</bug_when>
    <thetext>Comment on attachment 177466
Patch

Clearing flags on attachment: 177466

Committed r136634: &lt;http://trac.webkit.org/changeset/136634&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783358</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-04 21:12:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177457</attachid>
            <date>2012-12-04 02:37:58 -0800</date>
            <delta_ts>2012-12-04 03:21:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103987-20121204193523.patch</filename>
            <type>text/plain</type>
            <size>22511</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTEyNjlhYWViYjEwZTgz
Zjc1OGMzOWEzMmNkYWVlZjNlMTU0M2JhMC4uOTA2OGRlNzllMjNkOTkwMmI0MmM4NjY3Y2UyZmE2
NzliNDhmZDhhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM2IEBACiAyMDEyLTEyLTA0ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbVjhdIFJlbW92ZSB0
b1Y4T2JqZWN0KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMzk4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIHRvVjhPYmplY3QoKSBpcyB1c2VkIG9ubHkgZm9yIE1lc3NhZ2VQb3J0IGFuZCBBcnJheUJ1
ZmZlcgorICAgICAgICBvbmx5IGJ5IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS4gSXQgaXMgd2FzdGVm
dWwgdG8gZ2VuZXJhdGUKKyAgICAgICAgdG9WOE9iamVjdCgpIGZvciBhbGwgaW50ZXJmYWNlcy4K
KworICAgICAgICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZUhl
YWRlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmg6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmg6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
OgorCisyMDEyLTEyLTA0ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKwog
ICAgICAgICBVbnJldmlld2VkLiBSZWJhc2VsaW5lZCBydW4tYmluZGluZ3MtdGVzdHMuCiAKICAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDk3N2Q2OTdjZDJlMmFkZWU5YjJiMTNkNjgxZjgyOWY1Y2Yx
M2EzOTcuLjljNTY3NjVjNmZiMzNhODJlM2RhYTNlYmQzZmJhZGE2MTgyYTdmOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMTItMDQgIEtlbnRhcm8g
SGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtWOF0gUmVtb3ZlIHRvVjhP
YmplY3QoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAzOTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
dG9WOE9iamVjdCgpIGlzIHVzZWQgb25seSBmb3IgTWVzc2FnZVBvcnQgYW5kIEFycmF5QnVmZmVy
CisgICAgICAgIG9ubHkgYnkgU2VyaWFsaXplZFNjcmlwdFZhbHVlLiBJdCBpcyB3YXN0ZWZ1bCB0
byBnZW5lcmF0ZQorICAgICAgICB0b1Y4T2JqZWN0KCkgZm9yIGFsbCBpbnRlcmZhY2VzLgorCisg
ICAgICAgIE5vIHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBzcmMv
V2ViQXJyYXlCdWZmZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBcnJheUJ1ZmZlcjo6dG9W
OFZhbHVlKToKKyAgICAgICAgKiBzcmMvV2ViQmxvYi5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkJsb2I6OnRvVjhWYWx1ZSk6CisKIDIwMTItMTItMDMgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IENvcnJlY3QgZGF0YWJhc2UgdmVyc2lv
biBhZnRlciBhYm9ydGVkIHVwZ3JhZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggYTM0ZjU2OWNmNWMwOGRkNGE1ZmU0MDVm
OGFjNjlmMDZkZDgxZjQ1MC4uNzBlZWJjNzE2N2RlY2U4NjI2NTcwMzNjZWY3OWIwNTZhMDlhN2Rk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KQEAgLTU2MiwxNiArNTYyLDYgQEAgRU5ECiAKICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgPDxFTkQpOwogCi1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB0b1Y4T2Jq
ZWN0KCR7bmF0aXZlVHlwZX0qIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25D
b250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9
IDApCi17Ci0gICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4oKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSAk
Z2V0Q2FjaGVkV3JhcHBlcjsKLSAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gd3JhcHBlcjsKLSAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOwotfQotCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoJHtuYXRpdmVU
eXBlfSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKIHsKICAgICBp
ZiAoVU5MSUtFTFkoIWltcGwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaAppbmRleCA1M2U2ZGFlMWVhNzM5MzI4
MDY5NTliMmU2MTQ2MTdiZDIzZjY1MzI4Li5kYzFmYzYwNTcwMTU3YTkzZGFiMThmOTAwMTI3OGQy
ZmI3MDI5MTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhGbG9hdDY0QXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaApAQCAtNTYsMTYgKzU2LDYgQEAgcHJpdmF0ZToK
IAogdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKEZsb2F0NjRBcnJheSogaW1wbCwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiA9IDApOwogCi1p
bmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB0b1Y4T2JqZWN0KEZsb2F0NjRBcnJheSogaW1w
bCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKLXsKLSAgICBpZiAoVU5MSUtF
TFkoIWltcGwpKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwotICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Y3VycmVudChp
c29sYXRlKS0+Z2V0KGltcGwpOwotICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiB3cmFwcGVyOwotICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSk7Ci19Ci0KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChGbG9hdDY0
QXJyYXkqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiB7CiAgICAg
aWYgKFVOTElLRUxZKCFpbXBsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaAppbmRleCA4
ZjVkYmQ0YmUxMjQ2ZmFjOTBkOTM4ODJlZTcwMzM5ZDdlOGIxNjM4Li5iYjc5MzI0NDc3ZmFiZmIw
NWMxMzNiZDlhZjI4YTliMjU2ODI1ZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5o
CkBAIC02MSwxNiArNjEsNiBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRl
c3RBY3RpdmVET01PYmplY3QqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iagogICAgIHJldHVybiBW
OFRlc3RBY3RpdmVET01PYmplY3Q6OmNyZWF0ZVdyYXBwZXIoaW1wbCwgY3JlYXRpb25Db250ZXh0
LCBpc29sYXRlKTsKIH0KIAotaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdG9WOE9iamVj
dChUZXN0QWN0aXZlRE9NT2JqZWN0KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUgPSAwKQotewotICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCi0gICAgICAgIHJldHVybiB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
ID0gRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7Ci0gICAgaWYgKCF3
cmFwcGVyLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgcmV0dXJuIHdy
YXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLX0KLQogaW5saW5lIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RBY3RpdmVET01PYmplY3QqIGltcGwsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RD
dXN0b21OYW1lZEdldHRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKaW5kZXggYzIyNDFhZTVjODAyNDAxYzQ5MTZl
MmM0NDcwZTE0YjNlOWM5MWJiNy4uNzAzNjg5MjVhMmI2YzdlYzA0NmE1ZTZiZGM5MDA5YzZkMTg5
YzJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKQEAgLTYwLDE2ICs2MCw2
IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdEN1c3RvbU5hbWVkR2V0
dGVyKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPCiAgICAgcmV0dXJuIFY4VGVzdEN1c3RvbU5hbWVk
R2V0dGVyOjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9
CiAKLWlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHRvVjhPYmplY3QoVGVzdEN1c3RvbU5h
bWVkR2V0dGVyKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQotewot
ICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0
b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7Ci0gICAgaWYgKCF3cmFwcGVyLklzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgcmV0dXJuIHdyYXAoaW1wbCwgY3Jl
YXRpb25Db250ZXh0LCBpc29sYXRlKTsKLX0KLQogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4KFRlc3RDdXN0b21OYW1lZEdldHRlciogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRl
KiBpc29sYXRlID0gMCkKIHsKICAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3Ry
dWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RF
dmVudENvbnN0cnVjdG9yLmgKaW5kZXggMGRmOWFkMThhYWZiNjFiMTQzOTcwMjAwZDM4NmI1Mzcz
YThlNzcxNi4uMjYzYjkwZmMyZmE4YjEwYmRkNTI3ZjAxYjYwZTE1MWVjM2NkN2MzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50
Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCkBAIC02MSwxNiArNjEsNiBAQCBpbmxpbmUgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RFdmVudENvbnN0cnVjdG9yKiBpbXBsLCB2ODo6
SGFuZGxlPHY4OjpPYgogICAgIHJldHVybiBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpjcmVhdGVX
cmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKLWlubGluZSB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHRvVjhPYmplY3QoVGVzdEV2ZW50Q29uc3RydWN0b3IqIGltcGws
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCi17Ci0gICAgaWYgKFVOTElLRUxZ
KCFpbXBsKSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKLSAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNv
bGF0ZSktPmdldChpbXBsKTsKLSAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gd3JhcHBlcjsKLSAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOwotfQotCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdEV2ZW50
Q29uc3RydWN0b3IqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0
ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiB7
CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKaW5kZXggMTA3
MmJiNzY3OWQyZDU1MmYzMjQ3ZmMwYmY4YmUyY2Q3NTk2Mjg4Mi4uMDFmM2I5ZjEwNGM1ODE0MGIw
ODUzYzQxYWIyMTBkMjYyMDhjMGVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKQEAgLTYyLDE2
ICs2Miw2IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdEV2ZW50VGFy
Z2V0KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+CiAgICAgcmV0dXJuIFY4VGVzdEV2ZW50
VGFyZ2V0OjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9
CiAKLWlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHRvVjhPYmplY3QoVGVzdEV2ZW50VGFy
Z2V0KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQotewotICAgIGlm
IChVTkxJS0VMWSghaW1wbCkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpj
dXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7Ci0gICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25D
b250ZXh0LCBpc29sYXRlKTsKLX0KLQogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
KFRlc3RFdmVudFRhcmdldCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0g
MCkKIHsKICAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oCmluZGV4IDBm
Nzc3MWQ4YTBlZmI3Yzg4NWMzNWIwYzQyYjc5YjFmZDQ2NzU1MjAuLmIzYjhmMGE5NmU1MTk5NmY2
ODU1MzcwNjQzNmViNWIxNGY5NzU3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgKQEAgLTU5LDE2ICs1
OSw2IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdEV4Y2VwdGlvbiog
aW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjCiAgICAgcmV0dXJuIFY4VGVzdEV4Y2VwdGlv
bjo6Y3JlYXRlV3JhcHBlcihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCi1p
bmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB0b1Y4T2JqZWN0KFRlc3RFeGNlcHRpb24qIGlt
cGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCi17Ci0gICAgaWYgKFVOTElL
RUxZKCFpbXBsKSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKLSAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmN1cnJlbnQo
aXNvbGF0ZSktPmdldChpbXBsKTsKLSAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gd3JhcHBlcjsKLSAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQs
IGlzb2xhdGUpOwotfQotCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdEV4
Y2VwdGlvbiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKIHsKICAg
ICBpZiAoVU5MSUtFTFkoIWltcGwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oCmluZGV4IDg4MTlhM2U1YjIw
NDhjYjBkZWE4N2ZkNTRiYzQyMWU4YmE1ODVjODQuLmU3NGVmNjg2MmI3ZGIxNzc1NTg0YmZmOWU2
NmZjYTZhNmQyOTdjNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgKQEAgLTY0LDE2ICs2NCw2IEBAIGlu
bGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdEludGVyZmFjZSogaW1wbCwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjCiAgICAgcmV0dXJuIFY4VGVzdEludGVyZmFjZTo6Y3JlYXRl
V3JhcHBlcihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCi1pbmxpbmUgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB0b1Y4T2JqZWN0KFRlc3RJbnRlcmZhY2UqIGltcGwsIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCi17Ci0gICAgaWYgKFVOTElLRUxZKCFpbXBs
KSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKLSAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSkt
PmdldChpbXBsKTsKLSAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
d3JhcHBlcjsKLSAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUp
OwotfQotCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdEludGVyZmFjZSog
aW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKIHsKICAgICBpZiAoVU5M
SUtFTFkoIWltcGwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgK
aW5kZXggMGM3NjllYWYzMWI5OWI1YmE0ZGY2ZGRiMTliNzZlZGI2NWI1YmRkOS4uMjBjOTBhZjM3
NTVjYzM0MmY5OGVlNGFkM2VhODYwYjQ2NDAwNDBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5oCkBAIC01OSwxNiArNTksNiBAQCBpbmxpbmUgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBpbXBsLCB2ODo6
SGFuZGxlPAogICAgIHJldHVybiBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpjcmVhdGVX
cmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKLWlubGluZSB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHRvVjhPYmplY3QoVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIq
IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCi17Ci0gICAgaWYgKFVO
TElLRUxZKCFpbXBsKSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsK
LSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmN1cnJl
bnQoaXNvbGF0ZSktPmdldChpbXBsKTsKLSAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRl
eHQsIGlzb2xhdGUpOwotfQotCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSA9IDApCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRD
b25zdHJ1Y3Rvci5oCmluZGV4IDRiZjQwY2ViZDE4Mzc3YTNjMzFkOGM4ZTRkZjE3ODRmMWExM2Vk
ODAuLmI1Njc0NTYyNTJmMjUwMWNlN2IzYjcyZThjMTBkODc5NjgyYzFmM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0
cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE5hbWVkQ29uc3RydWN0b3IuaApAQCAtNjYsMTYgKzY2LDYgQEAgaW5saW5lIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gd3JhcChUZXN0TmFtZWRDb25zdHJ1Y3RvciogaW1wbCwgdjg6OkhhbmRs
ZTx2ODo6T2IKICAgICByZXR1cm4gVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Y3JlYXRlV3JhcHBl
cihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCi1pbmxpbmUgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB0b1Y4T2JqZWN0KFRlc3ROYW1lZENvbnN0cnVjdG9yKiBpbXBsLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQotewotICAgIGlmIChVTkxJS0VMWSghaW1w
bCkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCk7Ci0gICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUp
LT5nZXQoaW1wbCk7Ci0gICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IHdyYXBwZXI7Ci0gICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRl
KTsKLX0KLQogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3ROYW1lZENvbnN0
cnVjdG9yKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogewogICAg
IGlmIChVTkxJS0VMWSghaW1wbCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaAppbmRleCA5YWNiMWU0NTFhZmRiMjMwYTQzMGE5
ZWUwZTRkZjY5YjJlNjRmNDczLi5hMjMzMzIxMmI1YmEwNjVkZDM5MTYxNjQwZjZhNGI0NTAyNzk4
YTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3ROb2RlLmgKQEAgLTYwLDE2ICs2MCw2IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdyYXAoVGVzdE5vZGUqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
CiAgICAgcmV0dXJuIFY4VGVzdE5vZGU6OmNyZWF0ZVdyYXBwZXIoaW1wbCwgY3JlYXRpb25Db250
ZXh0LCBpc29sYXRlKTsKIH0KIAotaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdG9WOE9i
amVjdChUZXN0Tm9kZSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRl
eHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkK
LXsKLSAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PigpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURh
dGFTdG9yZTo6Z2V0Tm9kZShpbXBsLCBpc29sYXRlKTsKLSAgICBpZiAoIXdyYXBwZXIuSXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVh
dGlvbkNvbnRleHQsIGlzb2xhdGUpOwotfQotCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjgoVGVzdE5vZGUqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDAp
CiB7CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaAppbmRleCAyMDUyYTkyYzNmZTM5YjRi
Y2YwMWFhZmVmNDdlOWZlY2MzN2Y4Y2M2Li5hYmIxZjk4MjQzNDlmNzRjZGVlYzA3OGU4YjczMWEw
YmRkODZmMzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE9iai5oCkBAIC02NSwxNiArNjUsNiBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwKFRlc3RPYmoqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRpbwogICAgIHJldHVybiBWOFRlc3RPYmo6OmNyZWF0ZVdyYXBwZXIoaW1wbCwgY3JlYXRpb25D
b250ZXh0LCBpc29sYXRlKTsKIH0KIAotaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdG9W
OE9iamVjdChUZXN0T2JqKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29u
dGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAw
KQotewotICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9N
RGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7Ci0gICAgaWYgKCF3cmFwcGVy
LklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgcmV0dXJuIHdyYXAoaW1w
bCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLX0KLQogaW5saW5lIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4KFRlc3RPYmoqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSA9IDApCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5oCmluZGV4IDE2YzNkNmZmN2FiZGFiOTk3M2YxYTBmZTY1Njdj
MTc0YjU5Y2YzMTIuLjgyY2UyMTA3ZmM1OGUxNTEwNjAxN2NhNTY4ZjQxN2EwZDhhYTdlNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaApAQCAtNjQsMTYgKzY0
LDYgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycyogaW1wbCwgdjg6OkhhbmRsZTwKICAgICByZXR1cm4gVjhUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6Y3JlYXRlV3JhcHBlcihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xh
dGUpOwogfQogCi1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB0b1Y4T2JqZWN0KFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUgPSAwKQotewotICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCi0gICAgICAgIHJldHVybiB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
ID0gRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7Ci0gICAgaWYgKCF3
cmFwcGVyLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgcmV0dXJuIHdy
YXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLX0KLQogaW5saW5lIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBpbXBsLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogewogICAgIGlmIChVTkxJS0VMWSghaW1w
bCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlLmgKaW5kZXggZTczMWE4ZTg2MWRmNGQyYTJlNThmZmIzN2VkYTA4MDVkZjljMmFmMy4uN2Vk
ZTA2N2Y5NjFlY2IyNWQ4MWM4YTA2NmFjODJhOGNmMzNlOGMwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaApAQCAtNjIsMTYgKzYy
LDYgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlKiBpbXBsLCB2ODoKICAgICByZXR1cm4gVjhUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4
dCwgaXNvbGF0ZSk7CiB9CiAKLWlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHRvVjhPYmpl
Y3QoVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaW1wbCwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4
OjpJc29sYXRlKiBpc29sYXRlID0gMCkKLXsKLSAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQotICAg
ICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwotICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGlt
cGwpOwotICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB3cmFwcGVy
OwotICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci19Ci0K
IGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4
dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQog
ewogICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCBiNjE5MTA1ODY1MDBkNzkz
M2EyM2FlYjllM2Q1NTRhM2E5MmYwYzFiLi4zNzc3NWE3ZjNiNGRlZjQ3MzQ1ZDA4ZTE4NjVlZDBm
OGViMmIwMjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTYxNSw2ICs2MTUsMjQgQEAgcHJpdmF0ZToKICAgICB2
ODo6SXNvbGF0ZSogbV9pc29sYXRlOwogfTsKIAorc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gdG9WOE9iamVjdChNZXNzYWdlUG9ydCogaW1wbCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7
CisgICAgaWYgKCFpbXBsKQorICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pigp
OworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gdG9WOChpbXBsLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+KCksIGlzb2xhdGUpOworICAgIEFTU0VSVCh3cmFwcGVyLT5Jc09iamVj
dCgpKTsKKyAgICByZXR1cm4gd3JhcHBlci5Bczx2ODo6T2JqZWN0PigpOworfQorCitzdGF0aWMg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB0b1Y4T2JqZWN0KEFycmF5QnVmZmVyKiBpbXBsLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBpZiAoIWltcGwpCisgICAgICAgIHJldHVybiB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIg
PSB0b1Y4KGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgaXNvbGF0ZSk7CisgICAgQVNT
RVJUKHdyYXBwZXItPklzT2JqZWN0KCkpOworICAgIHJldHVybiB3cmFwcGVyLkFzPHY4OjpPYmpl
Y3Q+KCk7Cit9CisKIGNsYXNzIFNlcmlhbGl6ZXIgewogICAgIGNsYXNzIFN0YXRlQmFzZTsKIHB1
YmxpYzoKQEAgLTYzOSwxMSArNjU3LDExIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKCF0cnlD
YXRjaC5IYXNDYXVnaHQoKSk7CiAgICAgICAgIGlmIChtZXNzYWdlUG9ydHMpIHsKICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWVzc2FnZVBvcnRzLT5zaXplKCk7IGkrKykKLSAg
ICAgICAgICAgICAgICBtX3RyYW5zZmVycmVkTWVzc2FnZVBvcnRzLnNldCh0b1Y4T2JqZWN0KG1l
c3NhZ2VQb3J0cy0+YXQoaSkuZ2V0KCksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgbV93cml0
ZXIuZ2V0SXNvbGF0ZSgpKSwgaSk7CisgICAgICAgICAgICAgICAgbV90cmFuc2ZlcnJlZE1lc3Nh
Z2VQb3J0cy5zZXQodG9WOE9iamVjdChtZXNzYWdlUG9ydHMtPmF0KGkpLmdldCgpLCBtX3dyaXRl
ci5nZXRJc29sYXRlKCkpLCBpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoYXJyYXlCdWZmZXJz
KSB7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5QnVmZmVycy0+c2l6
ZSgpOyBpKyspICB7Ci0gICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB2OEFy
cmF5QnVmZmVyID0gdG9WOE9iamVjdChhcnJheUJ1ZmZlcnMtPmF0KGkpLmdldCgpLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+KCksIG1fd3JpdGVyLmdldElzb2xhdGUoKSk7CisgICAgICAgICAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB2OEFycmF5QnVmZmVyID0gdG9WOE9iamVjdChhcnJh
eUJ1ZmZlcnMtPmF0KGkpLmdldCgpLCBtX3dyaXRlci5nZXRJc29sYXRlKCkpOwogICAgICAgICAg
ICAgICAgIC8vIENvYWxlc2NlIG11bHRpcGxlIG9jY3VyZW5jZXMgb2YgdGhlIHNhbWUgYnVmZmVy
IHRvIHRoZSBmaXJzdCBpbmRleC4KICAgICAgICAgICAgICAgICBpZiAoIW1fdHJhbnNmZXJyZWRB
cnJheUJ1ZmZlcnMuY29udGFpbnModjhBcnJheUJ1ZmZlcikpCiAgICAgICAgICAgICAgICAgICAg
IG1fdHJhbnNmZXJyZWRBcnJheUJ1ZmZlcnMuc2V0KHY4QXJyYXlCdWZmZXIsIGkpOwpAQCAtMjA0
MCw3ICsyMDU4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBi
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1fYXJyYXlCdWZmZXJDb250ZW50cy0+YXQoaW5k
ZXgpKTsKICAgICAgICAgICAgIGJ1ZmZlci0+c2V0RGVhbGxvY2F0aW9uT2JzZXJ2ZXIoVjhBcnJh
eUJ1ZmZlckRlYWxsb2NhdGlvbk9ic2VydmVyOjppbnN0YW5jZSgpKTsKICAgICAgICAgICAgIHY4
OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeShidWZmZXItPmJ5dGVM
ZW5ndGgoKSk7Ci0gICAgICAgICAgICByZXN1bHQgPSB0b1Y4T2JqZWN0KGJ1ZmZlci5nZXQoKSwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCBtX3JlYWRlci5nZXRJc29sYXRlKCkpOworICAgICAg
ICAgICAgcmVzdWx0ID0gdG9WOE9iamVjdChidWZmZXIuZ2V0KCksIG1fcmVhZGVyLmdldElzb2xh
dGUoKSk7CiAgICAgICAgICAgICBtX2FycmF5QnVmZmVyc1tpbmRleF0gPSByZXN1bHQ7CiAgICAg
ICAgIH0KICAgICAgICAgKm9iamVjdCA9IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkFycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkFycmF5QnVmZmVyLmNwcAppbmRleCAyZDE5MmJkYjc4ZWQxMGY1NWRhMmE4NjU1
YTdjNzhlNzE4MWFmMzJlLi5hZWUwYzVmNDgzNGU0MTA3MjRlMDkzMzc5MTJhYTgxOGMwOTk2NjJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBcnJheUJ1ZmZlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQXJyYXlCdWZmZXIuY3BwCkBA
IC03Miw3ICs3Miw3IEBAIHVuc2lnbmVkIFdlYkFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29u
c3QKICNpZiBXRUJLSVRfVVNJTkdfVjgKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBXZWJBcnJheUJ1
ZmZlcjo6dG9WOFZhbHVlKCkKIHsKLSAgICByZXR1cm4gdG9WOE9iamVjdChtX3ByaXZhdGUuZ2V0
KCkpOworICAgIHJldHVybiB0b1Y4KG1fcHJpdmF0ZS5nZXQoKSk7CiB9CiAKIFdlYkFycmF5QnVm
ZmVyKiBXZWJBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbVY4VmFsdWUodjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQmxv
Yi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCbG9iLmNwcAppbmRleCBiMmYy
OTlmZGQzNDIzYjUwYWI3MGJkNDAwZjRmN2YzMGIyMDRlZjU3Li4xZmNiNDQyNzRjNjkzZWU5MmYw
MGQ2OGJkZmRlNDNhMmMxMjFmMTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJCbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCbG9i
LmNwcApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIFdlYkJsb2I6OmFzc2lnbihjb25zdCBXZWJCbG9i
JiBvdGhlcikKICNpZiBXRUJLSVRfVVNJTkdfVjgKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAgV2Vi
QmxvYjo6dG9WOFZhbHVlKCkKIHsKLSAgICByZXR1cm4gdG9WOE9iamVjdChtX3ByaXZhdGUuZ2V0
KCkpOworICAgIHJldHVybiB0b1Y4KG1fcHJpdmF0ZS5nZXQoKSk7CiB9CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177463</attachid>
            <date>2012-12-04 03:21:34 -0800</date>
            <delta_ts>2012-12-04 03:45:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103987-20121204201859.patch</filename>
            <type>text/plain</type>
            <size>22635</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTEyNjlhYWViYjEwZTgz
Zjc1OGMzOWEzMmNkYWVlZjNlMTU0M2JhMC4uOTA2OGRlNzllMjNkOTkwMmI0MmM4NjY3Y2UyZmE2
NzliNDhmZDhhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM2IEBACiAyMDEyLTEyLTA0ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbVjhdIFJlbW92ZSB0
b1Y4T2JqZWN0KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMzk4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIHRvVjhPYmplY3QoKSBpcyB1c2VkIG9ubHkgZm9yIE1lc3NhZ2VQb3J0IGFuZCBBcnJheUJ1
ZmZlcgorICAgICAgICBvbmx5IGJ5IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS4gSXQgaXMgd2FzdGVm
dWwgdG8gZ2VuZXJhdGUKKyAgICAgICAgdG9WOE9iamVjdCgpIGZvciBhbGwgaW50ZXJmYWNlcy4K
KworICAgICAgICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZUhl
YWRlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmg6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmg6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
OgorCisyMDEyLTEyLTA0ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKwog
ICAgICAgICBVbnJldmlld2VkLiBSZWJhc2VsaW5lZCBydW4tYmluZGluZ3MtdGVzdHMuCiAKICAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDk3N2Q2OTdjZDJlMmFkZWU5YjJiMTNkNjgxZjgyOWY1Y2Yx
M2EzOTcuLjljNTY3NjVjNmZiMzNhODJlM2RhYTNlYmQzZmJhZGE2MTgyYTdmOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMTItMDQgIEtlbnRhcm8g
SGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtWOF0gUmVtb3ZlIHRvVjhP
YmplY3QoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAzOTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
dG9WOE9iamVjdCgpIGlzIHVzZWQgb25seSBmb3IgTWVzc2FnZVBvcnQgYW5kIEFycmF5QnVmZmVy
CisgICAgICAgIG9ubHkgYnkgU2VyaWFsaXplZFNjcmlwdFZhbHVlLiBJdCBpcyB3YXN0ZWZ1bCB0
byBnZW5lcmF0ZQorICAgICAgICB0b1Y4T2JqZWN0KCkgZm9yIGFsbCBpbnRlcmZhY2VzLgorCisg
ICAgICAgIE5vIHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBzcmMv
V2ViQXJyYXlCdWZmZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBcnJheUJ1ZmZlcjo6dG9W
OFZhbHVlKToKKyAgICAgICAgKiBzcmMvV2ViQmxvYi5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkJsb2I6OnRvVjhWYWx1ZSk6CisKIDIwMTItMTItMDMgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IENvcnJlY3QgZGF0YWJhc2UgdmVyc2lv
biBhZnRlciBhYm9ydGVkIHVwZ3JhZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggYTM0ZjU2OWNmNWMwOGRkNGE1ZmU0MDVm
OGFjNjlmMDZkZDgxZjQ1MC4uNzBlZWJjNzE2N2RlY2U4NjI2NTcwMzNjZWY3OWIwNTZhMDlhN2Rk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KQEAgLTU2MiwxNiArNTYyLDYgQEAgRU5ECiAKICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgPDxFTkQpOwogCi1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB0b1Y4T2Jq
ZWN0KCR7bmF0aXZlVHlwZX0qIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25D
b250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9
IDApCi17Ci0gICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4oKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSAk
Z2V0Q2FjaGVkV3JhcHBlcjsKLSAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gd3JhcHBlcjsKLSAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOwotfQotCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoJHtuYXRpdmVU
eXBlfSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKIHsKICAgICBp
ZiAoVU5MSUtFTFkoIWltcGwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaAppbmRleCA1M2U2ZGFlMWVhNzM5MzI4
MDY5NTliMmU2MTQ2MTdiZDIzZjY1MzI4Li5kYzFmYzYwNTcwMTU3YTkzZGFiMThmOTAwMTI3OGQy
ZmI3MDI5MTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhGbG9hdDY0QXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaApAQCAtNTYsMTYgKzU2LDYgQEAgcHJpdmF0ZToK
IAogdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKEZsb2F0NjRBcnJheSogaW1wbCwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiA9IDApOwogCi1p
bmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB0b1Y4T2JqZWN0KEZsb2F0NjRBcnJheSogaW1w
bCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKLXsKLSAgICBpZiAoVU5MSUtF
TFkoIWltcGwpKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwotICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Y3VycmVudChp
c29sYXRlKS0+Z2V0KGltcGwpOwotICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiB3cmFwcGVyOwotICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSk7Ci19Ci0KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChGbG9hdDY0
QXJyYXkqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiB7CiAgICAg
aWYgKFVOTElLRUxZKCFpbXBsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaAppbmRleCA4
ZjVkYmQ0YmUxMjQ2ZmFjOTBkOTM4ODJlZTcwMzM5ZDdlOGIxNjM4Li5iYjc5MzI0NDc3ZmFiZmIw
NWMxMzNiZDlhZjI4YTliMjU2ODI1ZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5o
CkBAIC02MSwxNiArNjEsNiBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRl
c3RBY3RpdmVET01PYmplY3QqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iagogICAgIHJldHVybiBW
OFRlc3RBY3RpdmVET01PYmplY3Q6OmNyZWF0ZVdyYXBwZXIoaW1wbCwgY3JlYXRpb25Db250ZXh0
LCBpc29sYXRlKTsKIH0KIAotaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdG9WOE9iamVj
dChUZXN0QWN0aXZlRE9NT2JqZWN0KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUgPSAwKQotewotICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCi0gICAgICAgIHJldHVybiB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
ID0gRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7Ci0gICAgaWYgKCF3
cmFwcGVyLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgcmV0dXJuIHdy
YXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLX0KLQogaW5saW5lIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RBY3RpdmVET01PYmplY3QqIGltcGwsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RD
dXN0b21OYW1lZEdldHRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKaW5kZXggYzIyNDFhZTVjODAyNDAxYzQ5MTZl
MmM0NDcwZTE0YjNlOWM5MWJiNy4uNzAzNjg5MjVhMmI2YzdlYzA0NmE1ZTZiZGM5MDA5YzZkMTg5
YzJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKQEAgLTYwLDE2ICs2MCw2
IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdEN1c3RvbU5hbWVkR2V0
dGVyKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPCiAgICAgcmV0dXJuIFY4VGVzdEN1c3RvbU5hbWVk
R2V0dGVyOjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9
CiAKLWlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHRvVjhPYmplY3QoVGVzdEN1c3RvbU5h
bWVkR2V0dGVyKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQotewot
ICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0
b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7Ci0gICAgaWYgKCF3cmFwcGVyLklzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgcmV0dXJuIHdyYXAoaW1wbCwgY3Jl
YXRpb25Db250ZXh0LCBpc29sYXRlKTsKLX0KLQogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4KFRlc3RDdXN0b21OYW1lZEdldHRlciogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRl
KiBpc29sYXRlID0gMCkKIHsKICAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3Ry
dWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RF
dmVudENvbnN0cnVjdG9yLmgKaW5kZXggMGRmOWFkMThhYWZiNjFiMTQzOTcwMjAwZDM4NmI1Mzcz
YThlNzcxNi4uMjYzYjkwZmMyZmE4YjEwYmRkNTI3ZjAxYjYwZTE1MWVjM2NkN2MzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50
Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCkBAIC02MSwxNiArNjEsNiBAQCBpbmxpbmUgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RFdmVudENvbnN0cnVjdG9yKiBpbXBsLCB2ODo6
SGFuZGxlPHY4OjpPYgogICAgIHJldHVybiBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpjcmVhdGVX
cmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKLWlubGluZSB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHRvVjhPYmplY3QoVGVzdEV2ZW50Q29uc3RydWN0b3IqIGltcGws
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCi17Ci0gICAgaWYgKFVOTElLRUxZ
KCFpbXBsKSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKLSAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNv
bGF0ZSktPmdldChpbXBsKTsKLSAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gd3JhcHBlcjsKLSAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOwotfQotCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdEV2ZW50
Q29uc3RydWN0b3IqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0
ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiB7
CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKaW5kZXggMTA3
MmJiNzY3OWQyZDU1MmYzMjQ3ZmMwYmY4YmUyY2Q3NTk2Mjg4Mi4uMDFmM2I5ZjEwNGM1ODE0MGIw
ODUzYzQxYWIyMTBkMjYyMDhjMGVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKQEAgLTYyLDE2
ICs2Miw2IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdEV2ZW50VGFy
Z2V0KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+CiAgICAgcmV0dXJuIFY4VGVzdEV2ZW50
VGFyZ2V0OjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9
CiAKLWlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHRvVjhPYmplY3QoVGVzdEV2ZW50VGFy
Z2V0KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQotewotICAgIGlm
IChVTkxJS0VMWSghaW1wbCkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpj
dXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7Ci0gICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25D
b250ZXh0LCBpc29sYXRlKTsKLX0KLQogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
KFRlc3RFdmVudFRhcmdldCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0g
MCkKIHsKICAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oCmluZGV4IDBm
Nzc3MWQ4YTBlZmI3Yzg4NWMzNWIwYzQyYjc5YjFmZDQ2NzU1MjAuLmIzYjhmMGE5NmU1MTk5NmY2
ODU1MzcwNjQzNmViNWIxNGY5NzU3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgKQEAgLTU5LDE2ICs1
OSw2IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdEV4Y2VwdGlvbiog
aW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjCiAgICAgcmV0dXJuIFY4VGVzdEV4Y2VwdGlv
bjo6Y3JlYXRlV3JhcHBlcihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCi1p
bmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB0b1Y4T2JqZWN0KFRlc3RFeGNlcHRpb24qIGlt
cGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCi17Ci0gICAgaWYgKFVOTElL
RUxZKCFpbXBsKSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKLSAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmN1cnJlbnQo
aXNvbGF0ZSktPmdldChpbXBsKTsKLSAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gd3JhcHBlcjsKLSAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQs
IGlzb2xhdGUpOwotfQotCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdEV4
Y2VwdGlvbiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKIHsKICAg
ICBpZiAoVU5MSUtFTFkoIWltcGwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oCmluZGV4IDg4MTlhM2U1YjIw
NDhjYjBkZWE4N2ZkNTRiYzQyMWU4YmE1ODVjODQuLmU3NGVmNjg2MmI3ZGIxNzc1NTg0YmZmOWU2
NmZjYTZhNmQyOTdjNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgKQEAgLTY0LDE2ICs2NCw2IEBAIGlu
bGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdEludGVyZmFjZSogaW1wbCwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjCiAgICAgcmV0dXJuIFY4VGVzdEludGVyZmFjZTo6Y3JlYXRl
V3JhcHBlcihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCi1pbmxpbmUgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB0b1Y4T2JqZWN0KFRlc3RJbnRlcmZhY2UqIGltcGwsIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCi17Ci0gICAgaWYgKFVOTElLRUxZKCFpbXBs
KSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKLSAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSkt
PmdldChpbXBsKTsKLSAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
d3JhcHBlcjsKLSAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUp
OwotfQotCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdEludGVyZmFjZSog
aW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKIHsKICAgICBpZiAoVU5M
SUtFTFkoIWltcGwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgK
aW5kZXggMGM3NjllYWYzMWI5OWI1YmE0ZGY2ZGRiMTliNzZlZGI2NWI1YmRkOS4uMjBjOTBhZjM3
NTVjYzM0MmY5OGVlNGFkM2VhODYwYjQ2NDAwNDBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5oCkBAIC01OSwxNiArNTksNiBAQCBpbmxpbmUgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBpbXBsLCB2ODo6
SGFuZGxlPAogICAgIHJldHVybiBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpjcmVhdGVX
cmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKLWlubGluZSB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHRvVjhPYmplY3QoVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIq
IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCi17Ci0gICAgaWYgKFVO
TElLRUxZKCFpbXBsKSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsK
LSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmN1cnJl
bnQoaXNvbGF0ZSktPmdldChpbXBsKTsKLSAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRl
eHQsIGlzb2xhdGUpOwotfQotCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSA9IDApCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRD
b25zdHJ1Y3Rvci5oCmluZGV4IDRiZjQwY2ViZDE4Mzc3YTNjMzFkOGM4ZTRkZjE3ODRmMWExM2Vk
ODAuLmI1Njc0NTYyNTJmMjUwMWNlN2IzYjcyZThjMTBkODc5NjgyYzFmM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0
cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE5hbWVkQ29uc3RydWN0b3IuaApAQCAtNjYsMTYgKzY2LDYgQEAgaW5saW5lIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gd3JhcChUZXN0TmFtZWRDb25zdHJ1Y3RvciogaW1wbCwgdjg6OkhhbmRs
ZTx2ODo6T2IKICAgICByZXR1cm4gVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Y3JlYXRlV3JhcHBl
cihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCi1pbmxpbmUgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB0b1Y4T2JqZWN0KFRlc3ROYW1lZENvbnN0cnVjdG9yKiBpbXBsLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQotewotICAgIGlmIChVTkxJS0VMWSghaW1w
bCkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCk7Ci0gICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUp
LT5nZXQoaW1wbCk7Ci0gICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IHdyYXBwZXI7Ci0gICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRl
KTsKLX0KLQogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3ROYW1lZENvbnN0
cnVjdG9yKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogewogICAg
IGlmIChVTkxJS0VMWSghaW1wbCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaAppbmRleCA5YWNiMWU0NTFhZmRiMjMwYTQzMGE5
ZWUwZTRkZjY5YjJlNjRmNDczLi5hMjMzMzIxMmI1YmEwNjVkZDM5MTYxNjQwZjZhNGI0NTAyNzk4
YTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3ROb2RlLmgKQEAgLTYwLDE2ICs2MCw2IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdyYXAoVGVzdE5vZGUqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
CiAgICAgcmV0dXJuIFY4VGVzdE5vZGU6OmNyZWF0ZVdyYXBwZXIoaW1wbCwgY3JlYXRpb25Db250
ZXh0LCBpc29sYXRlKTsKIH0KIAotaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdG9WOE9i
amVjdChUZXN0Tm9kZSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRl
eHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkK
LXsKLSAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PigpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURh
dGFTdG9yZTo6Z2V0Tm9kZShpbXBsLCBpc29sYXRlKTsKLSAgICBpZiAoIXdyYXBwZXIuSXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVh
dGlvbkNvbnRleHQsIGlzb2xhdGUpOwotfQotCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjgoVGVzdE5vZGUqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDAp
CiB7CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaAppbmRleCAyMDUyYTkyYzNmZTM5YjRi
Y2YwMWFhZmVmNDdlOWZlY2MzN2Y4Y2M2Li5hYmIxZjk4MjQzNDlmNzRjZGVlYzA3OGU4YjczMWEw
YmRkODZmMzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE9iai5oCkBAIC02NSwxNiArNjUsNiBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwKFRlc3RPYmoqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRpbwogICAgIHJldHVybiBWOFRlc3RPYmo6OmNyZWF0ZVdyYXBwZXIoaW1wbCwgY3JlYXRpb25D
b250ZXh0LCBpc29sYXRlKTsKIH0KIAotaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdG9W
OE9iamVjdChUZXN0T2JqKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29u
dGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAw
KQotewotICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9N
RGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7Ci0gICAgaWYgKCF3cmFwcGVy
LklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgcmV0dXJuIHdyYXAoaW1w
bCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLX0KLQogaW5saW5lIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4KFRlc3RPYmoqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSA9IDApCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5oCmluZGV4IDE2YzNkNmZmN2FiZGFiOTk3M2YxYTBmZTY1Njdj
MTc0YjU5Y2YzMTIuLjgyY2UyMTA3ZmM1OGUxNTEwNjAxN2NhNTY4ZjQxN2EwZDhhYTdlNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaApAQCAtNjQsMTYgKzY0
LDYgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycyogaW1wbCwgdjg6OkhhbmRsZTwKICAgICByZXR1cm4gVjhUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6Y3JlYXRlV3JhcHBlcihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xh
dGUpOwogfQogCi1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB0b1Y4T2JqZWN0KFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUgPSAwKQotewotICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCi0gICAgICAgIHJldHVybiB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
ID0gRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7Ci0gICAgaWYgKCF3
cmFwcGVyLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgcmV0dXJuIHdy
YXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLX0KLQogaW5saW5lIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBpbXBsLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogewogICAgIGlmIChVTkxJS0VMWSghaW1w
bCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlLmgKaW5kZXggZTczMWE4ZTg2MWRmNGQyYTJlNThmZmIzN2VkYTA4MDVkZjljMmFmMy4uN2Vk
ZTA2N2Y5NjFlY2IyNWQ4MWM4YTA2NmFjODJhOGNmMzNlOGMwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaApAQCAtNjIsMTYgKzYy
LDYgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlKiBpbXBsLCB2ODoKICAgICByZXR1cm4gVjhUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4
dCwgaXNvbGF0ZSk7CiB9CiAKLWlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHRvVjhPYmpl
Y3QoVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaW1wbCwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4
OjpJc29sYXRlKiBpc29sYXRlID0gMCkKLXsKLSAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQotICAg
ICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwotICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGlt
cGwpOwotICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB3cmFwcGVy
OwotICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci19Ci0K
IGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4
dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQog
ewogICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCBiNjE5MTA1ODY1MDBkNzkz
M2EyM2FlYjllM2Q1NTRhM2E5MmYwYzFiLi4zNzc3NWE3ZjNiNGRlZjQ3MzQ1ZDA4ZTE4NjVlZDBm
OGViMmIwMjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTYxNSw2ICs2MTUsMjQgQEAgcHJpdmF0ZToKICAgICB2
ODo6SXNvbGF0ZSogbV9pc29sYXRlOwogfTsKIAorc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gdG9WOE9iamVjdChNZXNzYWdlUG9ydCogaW1wbCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7
CisgICAgaWYgKCFpbXBsKQorICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pigp
OworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gdG9WOChpbXBsLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+KCksIGlzb2xhdGUpOworICAgIEFTU0VSVCh3cmFwcGVyLT5Jc09iamVj
dCgpKTsKKyAgICByZXR1cm4gd3JhcHBlci5Bczx2ODo6T2JqZWN0PigpOworfQorCitzdGF0aWMg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB0b1Y4T2JqZWN0KEFycmF5QnVmZmVyKiBpbXBsLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBpZiAoIWltcGwpCisgICAgICAgIHJldHVybiB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIg
PSB0b1Y4KGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgaXNvbGF0ZSk7CisgICAgQVNT
RVJUKHdyYXBwZXItPklzT2JqZWN0KCkpOworICAgIHJldHVybiB3cmFwcGVyLkFzPHY4OjpPYmpl
Y3Q+KCk7Cit9CisKIGNsYXNzIFNlcmlhbGl6ZXIgewogICAgIGNsYXNzIFN0YXRlQmFzZTsKIHB1
YmxpYzoKQEAgLTYzOSwxMSArNjU3LDExIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKCF0cnlD
YXRjaC5IYXNDYXVnaHQoKSk7CiAgICAgICAgIGlmIChtZXNzYWdlUG9ydHMpIHsKICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWVzc2FnZVBvcnRzLT5zaXplKCk7IGkrKykKLSAg
ICAgICAgICAgICAgICBtX3RyYW5zZmVycmVkTWVzc2FnZVBvcnRzLnNldCh0b1Y4T2JqZWN0KG1l
c3NhZ2VQb3J0cy0+YXQoaSkuZ2V0KCksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgbV93cml0
ZXIuZ2V0SXNvbGF0ZSgpKSwgaSk7CisgICAgICAgICAgICAgICAgbV90cmFuc2ZlcnJlZE1lc3Nh
Z2VQb3J0cy5zZXQodG9WOE9iamVjdChtZXNzYWdlUG9ydHMtPmF0KGkpLmdldCgpLCBtX3dyaXRl
ci5nZXRJc29sYXRlKCkpLCBpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoYXJyYXlCdWZmZXJz
KSB7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5QnVmZmVycy0+c2l6
ZSgpOyBpKyspICB7Ci0gICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB2OEFy
cmF5QnVmZmVyID0gdG9WOE9iamVjdChhcnJheUJ1ZmZlcnMtPmF0KGkpLmdldCgpLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+KCksIG1fd3JpdGVyLmdldElzb2xhdGUoKSk7CisgICAgICAgICAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB2OEFycmF5QnVmZmVyID0gdG9WOE9iamVjdChhcnJh
eUJ1ZmZlcnMtPmF0KGkpLmdldCgpLCBtX3dyaXRlci5nZXRJc29sYXRlKCkpOwogICAgICAgICAg
ICAgICAgIC8vIENvYWxlc2NlIG11bHRpcGxlIG9jY3VyZW5jZXMgb2YgdGhlIHNhbWUgYnVmZmVy
IHRvIHRoZSBmaXJzdCBpbmRleC4KICAgICAgICAgICAgICAgICBpZiAoIW1fdHJhbnNmZXJyZWRB
cnJheUJ1ZmZlcnMuY29udGFpbnModjhBcnJheUJ1ZmZlcikpCiAgICAgICAgICAgICAgICAgICAg
IG1fdHJhbnNmZXJyZWRBcnJheUJ1ZmZlcnMuc2V0KHY4QXJyYXlCdWZmZXIsIGkpOwpAQCAtMjA0
MCw3ICsyMDU4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBi
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1fYXJyYXlCdWZmZXJDb250ZW50cy0+YXQoaW5k
ZXgpKTsKICAgICAgICAgICAgIGJ1ZmZlci0+c2V0RGVhbGxvY2F0aW9uT2JzZXJ2ZXIoVjhBcnJh
eUJ1ZmZlckRlYWxsb2NhdGlvbk9ic2VydmVyOjppbnN0YW5jZSgpKTsKICAgICAgICAgICAgIHY4
OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeShidWZmZXItPmJ5dGVM
ZW5ndGgoKSk7Ci0gICAgICAgICAgICByZXN1bHQgPSB0b1Y4T2JqZWN0KGJ1ZmZlci5nZXQoKSwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCBtX3JlYWRlci5nZXRJc29sYXRlKCkpOworICAgICAg
ICAgICAgcmVzdWx0ID0gdG9WOE9iamVjdChidWZmZXIuZ2V0KCksIG1fcmVhZGVyLmdldElzb2xh
dGUoKSk7CiAgICAgICAgICAgICBtX2FycmF5QnVmZmVyc1tpbmRleF0gPSByZXN1bHQ7CiAgICAg
ICAgIH0KICAgICAgICAgKm9iamVjdCA9IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkFycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkFycmF5QnVmZmVyLmNwcAppbmRleCAyZDE5MmJkYjc4ZWQxMGY1NWRhMmE4NjU1
YTdjNzhlNzE4MWFmMzJlLi41NmI5N2M4ZTU3ZmEwOTQwNzdmZTFmMTA3ZTg0YzVkYmQ3ZGY3YTBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBcnJheUJ1ZmZlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQXJyYXlCdWZmZXIuY3BwCkBA
IC03Miw3ICs3Miw5IEBAIHVuc2lnbmVkIFdlYkFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29u
c3QKICNpZiBXRUJLSVRfVVNJTkdfVjgKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBXZWJBcnJheUJ1
ZmZlcjo6dG9WOFZhbHVlKCkKIHsKLSAgICByZXR1cm4gdG9WOE9iamVjdChtX3ByaXZhdGUuZ2V0
KCkpOworICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6
VmFsdWU+KCk7CisgICAgcmV0dXJuIHRvVjgobV9wcml2YXRlLmdldCgpKTsKIH0KIAogV2ViQXJy
YXlCdWZmZXIqIFdlYkFycmF5QnVmZmVyOjpjcmVhdGVGcm9tVjhWYWx1ZSh2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkJsb2IuY3BwCmluZGV4
IGIyZjI5OWZkZDM0MjNiNTBhYjcwYmQ0MDBmNGY3ZjMwYjIwNGVmNTcuLmIyYWZhNGFlMWIwYjk0
YzM3Y2ZjYzc4ZWRiZTNlMDA1NmFmZGQzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkJsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkJsb2IuY3BwCkBAIC02MSw3ICs2MSw5IEBAIHZvaWQgV2ViQmxvYjo6YXNzaWduKGNvbnN0IFdl
YkJsb2ImIG90aGVyKQogI2lmIFdFQktJVF9VU0lOR19WOAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+
ICBXZWJCbG9iOjp0b1Y4VmFsdWUoKQogewotICAgIHJldHVybiB0b1Y4T2JqZWN0KG1fcHJpdmF0
ZS5nZXQoKSk7CisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4oKTsKKyAgICByZXR1cm4gdG9WOChtX3ByaXZhdGUuZ2V0KCkpOwogfQogI2Vu
ZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177466</attachid>
            <date>2012-12-04 03:46:24 -0800</date>
            <delta_ts>2012-12-04 21:12:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103987-20121204204318.patch</filename>
            <type>text/plain</type>
            <size>22647</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTEyNjlhYWViYjEwZTgz
Zjc1OGMzOWEzMmNkYWVlZjNlMTU0M2JhMC4uOTA2OGRlNzllMjNkOTkwMmI0MmM4NjY3Y2UyZmE2
NzliNDhmZDhhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM2IEBACiAyMDEyLTEyLTA0ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbVjhdIFJlbW92ZSB0
b1Y4T2JqZWN0KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMzk4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIHRvVjhPYmplY3QoKSBpcyB1c2VkIG9ubHkgZm9yIE1lc3NhZ2VQb3J0IGFuZCBBcnJheUJ1
ZmZlcgorICAgICAgICBvbmx5IGJ5IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS4gSXQgaXMgd2FzdGVm
dWwgdG8gZ2VuZXJhdGUKKyAgICAgICAgdG9WOE9iamVjdCgpIGZvciBhbGwgaW50ZXJmYWNlcy4K
KworICAgICAgICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZUhl
YWRlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmg6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmg6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
OgorCisyMDEyLTEyLTA0ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKwog
ICAgICAgICBVbnJldmlld2VkLiBSZWJhc2VsaW5lZCBydW4tYmluZGluZ3MtdGVzdHMuCiAKICAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDk3N2Q2OTdjZDJlMmFkZWU5YjJiMTNkNjgxZjgyOWY1Y2Yx
M2EzOTcuLjljNTY3NjVjNmZiMzNhODJlM2RhYTNlYmQzZmJhZGE2MTgyYTdmOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMTItMDQgIEtlbnRhcm8g
SGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtWOF0gUmVtb3ZlIHRvVjhP
YmplY3QoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAzOTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
dG9WOE9iamVjdCgpIGlzIHVzZWQgb25seSBmb3IgTWVzc2FnZVBvcnQgYW5kIEFycmF5QnVmZmVy
CisgICAgICAgIG9ubHkgYnkgU2VyaWFsaXplZFNjcmlwdFZhbHVlLiBJdCBpcyB3YXN0ZWZ1bCB0
byBnZW5lcmF0ZQorICAgICAgICB0b1Y4T2JqZWN0KCkgZm9yIGFsbCBpbnRlcmZhY2VzLgorCisg
ICAgICAgIE5vIHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBzcmMv
V2ViQXJyYXlCdWZmZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBcnJheUJ1ZmZlcjo6dG9W
OFZhbHVlKToKKyAgICAgICAgKiBzcmMvV2ViQmxvYi5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkJsb2I6OnRvVjhWYWx1ZSk6CisKIDIwMTItMTItMDMgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IENvcnJlY3QgZGF0YWJhc2UgdmVyc2lv
biBhZnRlciBhYm9ydGVkIHVwZ3JhZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggYTM0ZjU2OWNmNWMwOGRkNGE1ZmU0MDVm
OGFjNjlmMDZkZDgxZjQ1MC4uNzBlZWJjNzE2N2RlY2U4NjI2NTcwMzNjZWY3OWIwNTZhMDlhN2Rk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KQEAgLTU2MiwxNiArNTYyLDYgQEAgRU5ECiAKICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgPDxFTkQpOwogCi1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB0b1Y4T2Jq
ZWN0KCR7bmF0aXZlVHlwZX0qIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25D
b250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9
IDApCi17Ci0gICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4oKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSAk
Z2V0Q2FjaGVkV3JhcHBlcjsKLSAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gd3JhcHBlcjsKLSAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOwotfQotCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoJHtuYXRpdmVU
eXBlfSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKIHsKICAgICBp
ZiAoVU5MSUtFTFkoIWltcGwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaAppbmRleCA1M2U2ZGFlMWVhNzM5MzI4
MDY5NTliMmU2MTQ2MTdiZDIzZjY1MzI4Li5kYzFmYzYwNTcwMTU3YTkzZGFiMThmOTAwMTI3OGQy
ZmI3MDI5MTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhGbG9hdDY0QXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaApAQCAtNTYsMTYgKzU2LDYgQEAgcHJpdmF0ZToK
IAogdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKEZsb2F0NjRBcnJheSogaW1wbCwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiA9IDApOwogCi1p
bmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB0b1Y4T2JqZWN0KEZsb2F0NjRBcnJheSogaW1w
bCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKLXsKLSAgICBpZiAoVU5MSUtF
TFkoIWltcGwpKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwotICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Y3VycmVudChp
c29sYXRlKS0+Z2V0KGltcGwpOwotICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiB3cmFwcGVyOwotICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSk7Ci19Ci0KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChGbG9hdDY0
QXJyYXkqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiB7CiAgICAg
aWYgKFVOTElLRUxZKCFpbXBsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaAppbmRleCA4
ZjVkYmQ0YmUxMjQ2ZmFjOTBkOTM4ODJlZTcwMzM5ZDdlOGIxNjM4Li5iYjc5MzI0NDc3ZmFiZmIw
NWMxMzNiZDlhZjI4YTliMjU2ODI1ZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5o
CkBAIC02MSwxNiArNjEsNiBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRl
c3RBY3RpdmVET01PYmplY3QqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iagogICAgIHJldHVybiBW
OFRlc3RBY3RpdmVET01PYmplY3Q6OmNyZWF0ZVdyYXBwZXIoaW1wbCwgY3JlYXRpb25Db250ZXh0
LCBpc29sYXRlKTsKIH0KIAotaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdG9WOE9iamVj
dChUZXN0QWN0aXZlRE9NT2JqZWN0KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUgPSAwKQotewotICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCi0gICAgICAgIHJldHVybiB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
ID0gRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7Ci0gICAgaWYgKCF3
cmFwcGVyLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgcmV0dXJuIHdy
YXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLX0KLQogaW5saW5lIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RBY3RpdmVET01PYmplY3QqIGltcGwsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RD
dXN0b21OYW1lZEdldHRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKaW5kZXggYzIyNDFhZTVjODAyNDAxYzQ5MTZl
MmM0NDcwZTE0YjNlOWM5MWJiNy4uNzAzNjg5MjVhMmI2YzdlYzA0NmE1ZTZiZGM5MDA5YzZkMTg5
YzJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKQEAgLTYwLDE2ICs2MCw2
IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdEN1c3RvbU5hbWVkR2V0
dGVyKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPCiAgICAgcmV0dXJuIFY4VGVzdEN1c3RvbU5hbWVk
R2V0dGVyOjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9
CiAKLWlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHRvVjhPYmplY3QoVGVzdEN1c3RvbU5h
bWVkR2V0dGVyKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQotewot
ICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0
b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7Ci0gICAgaWYgKCF3cmFwcGVyLklzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgcmV0dXJuIHdyYXAoaW1wbCwgY3Jl
YXRpb25Db250ZXh0LCBpc29sYXRlKTsKLX0KLQogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4KFRlc3RDdXN0b21OYW1lZEdldHRlciogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRl
KiBpc29sYXRlID0gMCkKIHsKICAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3Ry
dWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RF
dmVudENvbnN0cnVjdG9yLmgKaW5kZXggMGRmOWFkMThhYWZiNjFiMTQzOTcwMjAwZDM4NmI1Mzcz
YThlNzcxNi4uMjYzYjkwZmMyZmE4YjEwYmRkNTI3ZjAxYjYwZTE1MWVjM2NkN2MzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50
Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCkBAIC02MSwxNiArNjEsNiBAQCBpbmxpbmUgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RFdmVudENvbnN0cnVjdG9yKiBpbXBsLCB2ODo6
SGFuZGxlPHY4OjpPYgogICAgIHJldHVybiBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpjcmVhdGVX
cmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKLWlubGluZSB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHRvVjhPYmplY3QoVGVzdEV2ZW50Q29uc3RydWN0b3IqIGltcGws
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCi17Ci0gICAgaWYgKFVOTElLRUxZ
KCFpbXBsKSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKLSAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNv
bGF0ZSktPmdldChpbXBsKTsKLSAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gd3JhcHBlcjsKLSAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOwotfQotCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdEV2ZW50
Q29uc3RydWN0b3IqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0
ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiB7
CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKaW5kZXggMTA3
MmJiNzY3OWQyZDU1MmYzMjQ3ZmMwYmY4YmUyY2Q3NTk2Mjg4Mi4uMDFmM2I5ZjEwNGM1ODE0MGIw
ODUzYzQxYWIyMTBkMjYyMDhjMGVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKQEAgLTYyLDE2
ICs2Miw2IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdEV2ZW50VGFy
Z2V0KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+CiAgICAgcmV0dXJuIFY4VGVzdEV2ZW50
VGFyZ2V0OjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9
CiAKLWlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHRvVjhPYmplY3QoVGVzdEV2ZW50VGFy
Z2V0KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQotewotICAgIGlm
IChVTkxJS0VMWSghaW1wbCkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpj
dXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7Ci0gICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25D
b250ZXh0LCBpc29sYXRlKTsKLX0KLQogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
KFRlc3RFdmVudFRhcmdldCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0g
MCkKIHsKICAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oCmluZGV4IDBm
Nzc3MWQ4YTBlZmI3Yzg4NWMzNWIwYzQyYjc5YjFmZDQ2NzU1MjAuLmIzYjhmMGE5NmU1MTk5NmY2
ODU1MzcwNjQzNmViNWIxNGY5NzU3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgKQEAgLTU5LDE2ICs1
OSw2IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdEV4Y2VwdGlvbiog
aW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjCiAgICAgcmV0dXJuIFY4VGVzdEV4Y2VwdGlv
bjo6Y3JlYXRlV3JhcHBlcihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCi1p
bmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB0b1Y4T2JqZWN0KFRlc3RFeGNlcHRpb24qIGlt
cGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCi17Ci0gICAgaWYgKFVOTElL
RUxZKCFpbXBsKSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKLSAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmN1cnJlbnQo
aXNvbGF0ZSktPmdldChpbXBsKTsKLSAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gd3JhcHBlcjsKLSAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQs
IGlzb2xhdGUpOwotfQotCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdEV4
Y2VwdGlvbiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKIHsKICAg
ICBpZiAoVU5MSUtFTFkoIWltcGwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oCmluZGV4IDg4MTlhM2U1YjIw
NDhjYjBkZWE4N2ZkNTRiYzQyMWU4YmE1ODVjODQuLmU3NGVmNjg2MmI3ZGIxNzc1NTg0YmZmOWU2
NmZjYTZhNmQyOTdjNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgKQEAgLTY0LDE2ICs2NCw2IEBAIGlu
bGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdEludGVyZmFjZSogaW1wbCwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjCiAgICAgcmV0dXJuIFY4VGVzdEludGVyZmFjZTo6Y3JlYXRl
V3JhcHBlcihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCi1pbmxpbmUgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB0b1Y4T2JqZWN0KFRlc3RJbnRlcmZhY2UqIGltcGwsIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCi17Ci0gICAgaWYgKFVOTElLRUxZKCFpbXBs
KSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKLSAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSkt
PmdldChpbXBsKTsKLSAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
d3JhcHBlcjsKLSAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUp
OwotfQotCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdEludGVyZmFjZSog
aW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKIHsKICAgICBpZiAoVU5M
SUtFTFkoIWltcGwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgK
aW5kZXggMGM3NjllYWYzMWI5OWI1YmE0ZGY2ZGRiMTliNzZlZGI2NWI1YmRkOS4uMjBjOTBhZjM3
NTVjYzM0MmY5OGVlNGFkM2VhODYwYjQ2NDAwNDBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5oCkBAIC01OSwxNiArNTksNiBAQCBpbmxpbmUgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBpbXBsLCB2ODo6
SGFuZGxlPAogICAgIHJldHVybiBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpjcmVhdGVX
cmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKLWlubGluZSB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHRvVjhPYmplY3QoVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIq
IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCi17Ci0gICAgaWYgKFVO
TElLRUxZKCFpbXBsKSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsK
LSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmN1cnJl
bnQoaXNvbGF0ZSktPmdldChpbXBsKTsKLSAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRl
eHQsIGlzb2xhdGUpOwotfQotCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSA9IDApCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRD
b25zdHJ1Y3Rvci5oCmluZGV4IDRiZjQwY2ViZDE4Mzc3YTNjMzFkOGM4ZTRkZjE3ODRmMWExM2Vk
ODAuLmI1Njc0NTYyNTJmMjUwMWNlN2IzYjcyZThjMTBkODc5NjgyYzFmM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0
cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE5hbWVkQ29uc3RydWN0b3IuaApAQCAtNjYsMTYgKzY2LDYgQEAgaW5saW5lIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gd3JhcChUZXN0TmFtZWRDb25zdHJ1Y3RvciogaW1wbCwgdjg6OkhhbmRs
ZTx2ODo6T2IKICAgICByZXR1cm4gVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Y3JlYXRlV3JhcHBl
cihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCi1pbmxpbmUgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB0b1Y4T2JqZWN0KFRlc3ROYW1lZENvbnN0cnVjdG9yKiBpbXBsLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQotewotICAgIGlmIChVTkxJS0VMWSghaW1w
bCkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCk7Ci0gICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUp
LT5nZXQoaW1wbCk7Ci0gICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IHdyYXBwZXI7Ci0gICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRl
KTsKLX0KLQogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3ROYW1lZENvbnN0
cnVjdG9yKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogewogICAg
IGlmIChVTkxJS0VMWSghaW1wbCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaAppbmRleCA5YWNiMWU0NTFhZmRiMjMwYTQzMGE5
ZWUwZTRkZjY5YjJlNjRmNDczLi5hMjMzMzIxMmI1YmEwNjVkZDM5MTYxNjQwZjZhNGI0NTAyNzk4
YTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3ROb2RlLmgKQEAgLTYwLDE2ICs2MCw2IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdyYXAoVGVzdE5vZGUqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
CiAgICAgcmV0dXJuIFY4VGVzdE5vZGU6OmNyZWF0ZVdyYXBwZXIoaW1wbCwgY3JlYXRpb25Db250
ZXh0LCBpc29sYXRlKTsKIH0KIAotaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdG9WOE9i
amVjdChUZXN0Tm9kZSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRl
eHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkK
LXsKLSAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PigpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURh
dGFTdG9yZTo6Z2V0Tm9kZShpbXBsLCBpc29sYXRlKTsKLSAgICBpZiAoIXdyYXBwZXIuSXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVh
dGlvbkNvbnRleHQsIGlzb2xhdGUpOwotfQotCiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjgoVGVzdE5vZGUqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDAp
CiB7CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaAppbmRleCAyMDUyYTkyYzNmZTM5YjRi
Y2YwMWFhZmVmNDdlOWZlY2MzN2Y4Y2M2Li5hYmIxZjk4MjQzNDlmNzRjZGVlYzA3OGU4YjczMWEw
YmRkODZmMzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE9iai5oCkBAIC02NSwxNiArNjUsNiBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwKFRlc3RPYmoqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRpbwogICAgIHJldHVybiBWOFRlc3RPYmo6OmNyZWF0ZVdyYXBwZXIoaW1wbCwgY3JlYXRpb25D
b250ZXh0LCBpc29sYXRlKTsKIH0KIAotaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdG9W
OE9iamVjdChUZXN0T2JqKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29u
dGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAw
KQotewotICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9N
RGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7Ci0gICAgaWYgKCF3cmFwcGVy
LklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgcmV0dXJuIHdyYXAoaW1w
bCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLX0KLQogaW5saW5lIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4KFRlc3RPYmoqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSA9IDApCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5oCmluZGV4IDE2YzNkNmZmN2FiZGFiOTk3M2YxYTBmZTY1Njdj
MTc0YjU5Y2YzMTIuLjgyY2UyMTA3ZmM1OGUxNTEwNjAxN2NhNTY4ZjQxN2EwZDhhYTdlNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaApAQCAtNjQsMTYgKzY0
LDYgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycyogaW1wbCwgdjg6OkhhbmRsZTwKICAgICByZXR1cm4gVjhUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6Y3JlYXRlV3JhcHBlcihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xh
dGUpOwogfQogCi1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB0b1Y4T2JqZWN0KFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUgPSAwKQotewotICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCi0gICAgICAgIHJldHVybiB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
ID0gRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7Ci0gICAgaWYgKCF3
cmFwcGVyLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgcmV0dXJuIHdy
YXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLX0KLQogaW5saW5lIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBpbXBsLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogewogICAgIGlmIChVTkxJS0VMWSghaW1w
bCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlLmgKaW5kZXggZTczMWE4ZTg2MWRmNGQyYTJlNThmZmIzN2VkYTA4MDVkZjljMmFmMy4uN2Vk
ZTA2N2Y5NjFlY2IyNWQ4MWM4YTA2NmFjODJhOGNmMzNlOGMwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaApAQCAtNjIsMTYgKzYy
LDYgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlKiBpbXBsLCB2ODoKICAgICByZXR1cm4gVjhUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4
dCwgaXNvbGF0ZSk7CiB9CiAKLWlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHRvVjhPYmpl
Y3QoVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaW1wbCwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4
OjpJc29sYXRlKiBpc29sYXRlID0gMCkKLXsKLSAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQotICAg
ICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwotICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGlt
cGwpOwotICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB3cmFwcGVy
OwotICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci19Ci0K
IGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4
dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQog
ewogICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCBiNjE5MTA1ODY1MDBkNzkz
M2EyM2FlYjllM2Q1NTRhM2E5MmYwYzFiLi4zNzc3NWE3ZjNiNGRlZjQ3MzQ1ZDA4ZTE4NjVlZDBm
OGViMmIwMjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTYxNSw2ICs2MTUsMjQgQEAgcHJpdmF0ZToKICAgICB2
ODo6SXNvbGF0ZSogbV9pc29sYXRlOwogfTsKIAorc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gdG9WOE9iamVjdChNZXNzYWdlUG9ydCogaW1wbCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7
CisgICAgaWYgKCFpbXBsKQorICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pigp
OworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gdG9WOChpbXBsLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+KCksIGlzb2xhdGUpOworICAgIEFTU0VSVCh3cmFwcGVyLT5Jc09iamVj
dCgpKTsKKyAgICByZXR1cm4gd3JhcHBlci5Bczx2ODo6T2JqZWN0PigpOworfQorCitzdGF0aWMg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB0b1Y4T2JqZWN0KEFycmF5QnVmZmVyKiBpbXBsLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBpZiAoIWltcGwpCisgICAgICAgIHJldHVybiB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIg
PSB0b1Y4KGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgaXNvbGF0ZSk7CisgICAgQVNT
RVJUKHdyYXBwZXItPklzT2JqZWN0KCkpOworICAgIHJldHVybiB3cmFwcGVyLkFzPHY4OjpPYmpl
Y3Q+KCk7Cit9CisKIGNsYXNzIFNlcmlhbGl6ZXIgewogICAgIGNsYXNzIFN0YXRlQmFzZTsKIHB1
YmxpYzoKQEAgLTYzOSwxMSArNjU3LDExIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKCF0cnlD
YXRjaC5IYXNDYXVnaHQoKSk7CiAgICAgICAgIGlmIChtZXNzYWdlUG9ydHMpIHsKICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWVzc2FnZVBvcnRzLT5zaXplKCk7IGkrKykKLSAg
ICAgICAgICAgICAgICBtX3RyYW5zZmVycmVkTWVzc2FnZVBvcnRzLnNldCh0b1Y4T2JqZWN0KG1l
c3NhZ2VQb3J0cy0+YXQoaSkuZ2V0KCksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgbV93cml0
ZXIuZ2V0SXNvbGF0ZSgpKSwgaSk7CisgICAgICAgICAgICAgICAgbV90cmFuc2ZlcnJlZE1lc3Nh
Z2VQb3J0cy5zZXQodG9WOE9iamVjdChtZXNzYWdlUG9ydHMtPmF0KGkpLmdldCgpLCBtX3dyaXRl
ci5nZXRJc29sYXRlKCkpLCBpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoYXJyYXlCdWZmZXJz
KSB7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5QnVmZmVycy0+c2l6
ZSgpOyBpKyspICB7Ci0gICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB2OEFy
cmF5QnVmZmVyID0gdG9WOE9iamVjdChhcnJheUJ1ZmZlcnMtPmF0KGkpLmdldCgpLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+KCksIG1fd3JpdGVyLmdldElzb2xhdGUoKSk7CisgICAgICAgICAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB2OEFycmF5QnVmZmVyID0gdG9WOE9iamVjdChhcnJh
eUJ1ZmZlcnMtPmF0KGkpLmdldCgpLCBtX3dyaXRlci5nZXRJc29sYXRlKCkpOwogICAgICAgICAg
ICAgICAgIC8vIENvYWxlc2NlIG11bHRpcGxlIG9jY3VyZW5jZXMgb2YgdGhlIHNhbWUgYnVmZmVy
IHRvIHRoZSBmaXJzdCBpbmRleC4KICAgICAgICAgICAgICAgICBpZiAoIW1fdHJhbnNmZXJyZWRB
cnJheUJ1ZmZlcnMuY29udGFpbnModjhBcnJheUJ1ZmZlcikpCiAgICAgICAgICAgICAgICAgICAg
IG1fdHJhbnNmZXJyZWRBcnJheUJ1ZmZlcnMuc2V0KHY4QXJyYXlCdWZmZXIsIGkpOwpAQCAtMjA0
MCw3ICsyMDU4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBi
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1fYXJyYXlCdWZmZXJDb250ZW50cy0+YXQoaW5k
ZXgpKTsKICAgICAgICAgICAgIGJ1ZmZlci0+c2V0RGVhbGxvY2F0aW9uT2JzZXJ2ZXIoVjhBcnJh
eUJ1ZmZlckRlYWxsb2NhdGlvbk9ic2VydmVyOjppbnN0YW5jZSgpKTsKICAgICAgICAgICAgIHY4
OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeShidWZmZXItPmJ5dGVM
ZW5ndGgoKSk7Ci0gICAgICAgICAgICByZXN1bHQgPSB0b1Y4T2JqZWN0KGJ1ZmZlci5nZXQoKSwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCBtX3JlYWRlci5nZXRJc29sYXRlKCkpOworICAgICAg
ICAgICAgcmVzdWx0ID0gdG9WOE9iamVjdChidWZmZXIuZ2V0KCksIG1fcmVhZGVyLmdldElzb2xh
dGUoKSk7CiAgICAgICAgICAgICBtX2FycmF5QnVmZmVyc1tpbmRleF0gPSByZXN1bHQ7CiAgICAg
ICAgIH0KICAgICAgICAgKm9iamVjdCA9IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkFycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkFycmF5QnVmZmVyLmNwcAppbmRleCAyZDE5MmJkYjc4ZWQxMGY1NWRhMmE4NjU1
YTdjNzhlNzE4MWFmMzJlLi43OTgzNWYzOThmZmMwMjNjMDQ2YzE1MzAwZGNiODAyYmNiNGJkNDk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBcnJheUJ1ZmZlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQXJyYXlCdWZmZXIuY3BwCkBA
IC03Miw3ICs3Miw5IEBAIHVuc2lnbmVkIFdlYkFycmF5QnVmZmVyOjpieXRlTGVuZ3RoKCkgY29u
c3QKICNpZiBXRUJLSVRfVVNJTkdfVjgKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBXZWJBcnJheUJ1
ZmZlcjo6dG9WOFZhbHVlKCkKIHsKLSAgICByZXR1cm4gdG9WOE9iamVjdChtX3ByaXZhdGUuZ2V0
KCkpOworICAgIGlmICghbV9wcml2YXRlLmdldCgpKQorICAgICAgICByZXR1cm4gdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+KCk7CisgICAgcmV0dXJuIHRvVjgobV9wcml2YXRlLmdldCgpKTsKIH0KIAog
V2ViQXJyYXlCdWZmZXIqIFdlYkFycmF5QnVmZmVyOjpjcmVhdGVGcm9tVjhWYWx1ZSh2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkJsb2IuY3Bw
CmluZGV4IGIyZjI5OWZkZDM0MjNiNTBhYjcwYmQ0MDBmNGY3ZjMwYjIwNGVmNTcuLjk2M2RhMTZi
MDdiNjdjY2IyYmJkMmE4YTU5NDBjZTRmZjAxMzA5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkJsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkJsb2IuY3BwCkBAIC02MSw3ICs2MSw5IEBAIHZvaWQgV2ViQmxvYjo6YXNzaWduKGNv
bnN0IFdlYkJsb2ImIG90aGVyKQogI2lmIFdFQktJVF9VU0lOR19WOAogdjg6OkhhbmRsZTx2ODo6
VmFsdWU+ICBXZWJCbG9iOjp0b1Y4VmFsdWUoKQogewotICAgIHJldHVybiB0b1Y4T2JqZWN0KG1f
cHJpdmF0ZS5nZXQoKSk7CisgICAgaWYgKCFtX3ByaXZhdGUuZ2V0KCkpCisgICAgICAgIHJldHVy
biB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICByZXR1cm4gdG9WOChtX3ByaXZhdGUuZ2V0
KCkpOwogfQogI2VuZGlmCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>