<?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>154379</bug_id>
          
          <creation_ts>2016-02-17 20:00:27 -0800</creation_ts>
          <short_desc>v3 UI should allow custom revisions for A/B testing</short_desc>
          <delta_ts>2016-02-18 12:07:50 -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>Perf Dashboard</component>
          <version>WebKit 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="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>slewis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1165879</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-17 20:00:27 -0800</bug_when>
    <thetext>This would bring v3 UI&apos;s analysis task page strictly more powerful than v2 UI&apos;s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165881</commentid>
    <comment_count>1</comment_count>
      <attachid>271620</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-17 20:25:31 -0800</bug_when>
    <thetext>Created attachment 271620
Adds the capability</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165884</commentid>
    <comment_count>2</comment_count>
      <attachid>271623</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-17 20:28:42 -0800</bug_when>
    <thetext>Created attachment 271623
Updated change log</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166099</commentid>
    <comment_count>3</comment_count>
      <attachid>271623</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-02-18 10:59:19 -0800</bug_when>
    <thetext>Comment on attachment 271623
Updated change log

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166121</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-18 12:07:50 -0800</bug_when>
    <thetext>Committed r196768: &lt;http://trac.webkit.org/changeset/196768&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271620</attachid>
            <date>2016-02-17 20:25:31 -0800</date>
            <delta_ts>2016-02-17 20:28:38 -0800</delta_ts>
            <desc>Adds the capability</desc>
            <filename>bug-154379-20160217202514.patch</filename>
            <type>text/plain</type>
            <size>28631</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMTk2NzM5KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDc2IEBACisyMDE2LTAyLTE3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIHYzIFVJIHNob3VsZCBhbGxvdyBjdXN0b20gcmV2aXNpb25zIGZvciBBL0IgdGVz
dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0
Mzc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgdGhlIGNhcGFiaWxpdHkgdG8gY3VzdG9taXplIHJldmlzaW9ucyBzZWxlY3RlZCBpbiB0aGUg
b3ZlcnZpZXcgY2hhcnQgYW5kIHRoZSByZXN1bHRzIHZpZXdlci4KKworICAgICAgICBOZXdseSBh
ZGRlZCBDdXN0b21pemFibGVUZXN0R3JvdXBGb3JtIGlzIHJlc3BvbnNpYmxlIGZvciBhbGxvd2lu
ZyB1c2VycyB0byBtb2RpZnkgdGhlIHNldCBvZiByZXZpc2lvbnMgaW4KKyAgICAgICAgYSBuZXcg
QS9CIHRlc3RpbmcgZ3JvdXAuIFVubGlrZSBUZXN0R3JvdXBGb3JtIHdoaWNoIGRvZXNuJ3Qga25v
dyBhbnl0aGluZyBhYm91dCB3aGljaCByZXZpc2lvbnMgYXJlIHNlbGVjdGVkCisgICAgICAgIGZv
ciBlYWNoIHByb2plY3QvcmVwb3NpdG9yeSwgQ3VzdG9taXphYmxlVGVzdEdyb3VwRm9ybSBpcyBh
d2FyZSBvZiB0aGUgbGlzdCBvZiByZXZpc2lvbnMgdXNlZCBpbiBlYWNoIHNldC4KKworICAgICAg
ICBUaGUgbGlzdCBvZiByZXZpc2lvbnMgdXNlZCBpbiBlYWNoIHNldCBpcyByZXByZXNlbnRlZCBi
eSBSb290U2V0IGlmIHVzZXJzIGhhZCBub3QgY3VzdG9taXplZCB0aGVtLCBhbmQKKyAgICAgICAg
Q3VzdG9tUm9vdFNldCBvdGhlcndpc2U7IHRoZSBsYXR0ZXIgd2FzIGFkZGVkIHNpbmNlIHJlZ3Vs
YXIgUm9vdFNldCBvYmplY3QgcmVxdWlyZXMgQ29tbWl0TG9nIGFuZCBvdGhlcgorICAgICAgICBE
YXRhTW9kZWxPYmplY3RzIHdoaWNoIGFyZSBoYXJkIHRvIGNyZWF0ZSB3aXRob3V0IGNvcnJlc3Bv
bmRpbmcgZGF0YWJhc2UgZW50cmllcy4KKworICAgICAgICAqIHB1YmxpYy92My9jb21wb25lbnRz
L2N1c3RvbWl6YWJsZS10ZXN0LWdyb3VwLWZvcm0uanM6IEFkZGVkLgorICAgICAgICAoQ3VzdG9t
aXphYmxlVGVzdEdyb3VwRm9ybSk6IEFkZGVkLgorICAgICAgICAoQ3VzdG9taXphYmxlVGVzdEdy
b3VwRm9ybS5wcm90b3R5cGUuc2V0Um9vdFNldE1hcCk6IEFkZGVkLgorICAgICAgICAoQ3VzdG9t
aXphYmxlVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUuX3N1Ym1pdHRlZCk6IE92ZXJyaWRlcyB0aGUg
c3VwZXJjbGFzcycgbWV0aG9kLgorICAgICAgICAoQ3VzdG9taXphYmxlVGVzdEdyb3VwRm9ybS5w
cm90b3R5cGUuX2N1c3RvbWl6ZSk6IERpdHRvLiBVbmxpa2UgVGVzdEdyb3VwRm9ybSdzIGNhbGxi
YWNrLCB0aGlzIGNsYXNzJworICAgICAgICBjYWxsYmFjayBwYXNzZXMgaW4gYSByb290IHNldCBt
YXAgYXMgdGhlIHRoaXJkIGFyZ3VtZW50LgorICAgICAgICAoQ3VzdG9taXphYmxlVGVzdEdyb3Vw
Rm9ybS5wcm90b3R5cGUuX2NvbXB1dGVSb290U2V0TWFwKTogQWRkZWQuIFJldHVybnMgdGhpcy5f
cm9vdFNldE1hcCwgd2hpY2ggaXMgc2V0IGJ5CisgICAgICAgIEFuYWx5c2lzVGFza1BhZ2UgaWYg
dXNlciBoYWQgbm90IGN1c3RvbWl6ZWQgdGhlIHJvb3Qgc2V0cy4gT3RoZXJ3aXNlIHJldHVybiBh
IG5ldyBtYXAgd2l0aCBDdXN0b21Sb290U2V0J3MuCisgICAgICAgIChDdXN0b21pemFibGVUZXN0
R3JvdXBGb3JtLnByb3RvdHlwZS5yZW5kZXIpOiBBZGRlZC4gQ3JlYXRlcyBhIHRhYmxlIHRvIGFs
bG93IGN1c3RvbWl6YXRpb24gb2Ygcm9vdCBzZXRzLgorICAgICAgICAoQ3VzdG9taXphYmxlVGVz
dEdyb3VwRm9ybS5fY29uc3RydWN0UmV2aXNpb25SYWRpb0J1dHRvbnMpOiBBZGRlZC4KKyAgICAg
ICAgKEN1c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0uX2NyZWF0ZVJhZGlvQnV0dG9uKTogQWRkZWQu
CisgICAgICAgIChDdXN0b21pemFibGVUZXN0R3JvdXBGb3JtLmNzc1RlbXBsYXRlKTogQWRkZWQu
CisgICAgICAgIChDdXN0b21pemFibGVUZXN0R3JvdXBGb3JtLmZvcm1Db250ZW50KTogQWRkZWQu
IFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSBUZXN0R3JvdXBGb3JtLmh0bWxUZW1wbGF0ZS4KKyAg
ICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy90ZXN0LWdyb3VwLWZvcm0uanM6CisgICAgICAg
IChUZXN0R3JvdXBGb3JtKTogVXBkYXRlZCB0aGUgdmFyaW91cyBtZXRob2RzIHRvIG5vdCBkaXJl
Y3RseSBtdXRhdGUgRE9NLiBTdG9yZSB0aGUgc3RhdGUgaW4gaW5zdGFuY2UKKyAgICAgICAgdmFy
aWFibGVzIGFuZCB1cGRhdGUgRE9NIGluIHJlbmRlcigpIGFzIGRvbmUgZWxzZXdoZXJlLgorICAg
ICAgICAoVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUuc2V0TmVlZHNOYW1lKTogRGVsZXRlZC4gV2Ug
bm8gbG9uZ2VyIG5lZWQgdGhpcyBmbGFnIHNpbmNlIFRlc3RHcm91cEZvcm0gd2hpY2ggaXMKKyAg
ICAgICAgdXNlZCBmb3IgcmV0cmllcyBuZXZlciBuZWVkcyBhIG5hbWUgYW5kIEN1c3RvbWl6YWJs
ZVRlc3RHcm91cEZvcm0gd2hpY2ggaXMgdXNlZCB0byBjcmVhdGUgYSBuZXcgdGVzdCBncm91cAor
ICAgICAgICBhbHdheXMgcmVxdWlyZXMgYSBuYW1lLgorICAgICAgICAoVGVzdEdyb3VwRm9ybS5w
cm90b3R5cGUuc2V0RGlzYWJsZWQpOgorICAgICAgICAoVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUu
c2V0TGFiZWwpOgorICAgICAgICAoVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUuc2V0UmVwZXRpdGlv
bkNvdW50KToKKyAgICAgICAgKFRlc3RHcm91cEZvcm0ucHJvdG90eXBlLnJlbmRlcik6IEFkZGVk
LgorICAgICAgICAoVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUuX3N1Ym1pdHRlZCk6IE1vdmVkIHRo
ZSBjb2RlIHRvIHByZXZlbnQgdGhlIGRlZmF1bHQgYWN0aW9uIGhhcyBiZWVuIG1vdmVkIHRvIHRo
ZQorICAgICAgICBjb25zdHJ1Y3RvciBzaW5jZSB0aGlzIG1ldGhvZCBpcyBvdmVycmlkZGVuIGJ5
IEN1c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0uCisgICAgICAgIChUZXN0R3JvdXBGb3JtLmNzc1Rl
bXBsYXRlKTogQWRkZWQuCisgICAgICAgIChUZXN0R3JvdXBGb3JtLmh0bWxUZW1wbGF0ZSk6Cisg
ICAgICAgIChUZXN0R3JvdXBGb3JtLmZvcm1Db250ZW50KTogRXh0cmFjdGVkIGZyb20gaHRtbFRl
bXBsYXRlLgorICAgICAgICAqIHB1YmxpYy92My9pbmRleC5odG1sOgorICAgICAgICAqIHB1Ymxp
Yy92My9tb2RlbHMvcmVwb3NpdG9yeS5qczoKKyAgICAgICAgKFJlcG9zaXRvcnkuc29ydEJ5TmFt
ZVByZWZlcnJpbmdPbmVzV2l0aFVSTCk6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy92My9tb2Rl
bHMvcm9vdC1zZXQuanM6CisgICAgICAgIChSb290U2V0LnByb3RvdHlwZS5yZXZpc2lvbkZvclJl
cG9zaXRvcnkpOiBBZGRlZC4KKyAgICAgICAgKEN1c3RvbVJvb3RTZXQpOiBBZGRlZC4gVXNlZCBi
eSBDdXN0b21pemFibGVUZXN0R3JvdXBGb3JtIHRvIGNyZWF0ZSBhIGN1c3RvbSByb290IG1hcCBz
aW5jZSByZWd1bGFyIFJvb3RTZXQKKyAgICAgICAgcmVxdWlyZXMgQ29tbWl0TG9nIGFuZCBvdGhl
ciByZWxhdGVkIG9iamVjdHMgd2hpY2ggYXJlIGhhcmQgdG8gY3JlYXRlIHdpdGhvdXQgZGF0YWJh
c2UgZW50cmllcy4KKyAgICAgICAgKEN1c3RvbVJvb3RTZXQucHJvdG90eXBlLnNldFJldmlzaW9u
Rm9yUmVwb3NpdG9yeSk6IEFkZGVkLgorICAgICAgICAoQ3VzdG9tUm9vdFNldC5wcm90b3R5cGUu
cmVwb3NpdG9yaWVzKTogQWRkZWQuCisgICAgICAgIChDdXN0b21Sb290U2V0LnByb3RvdHlwZS5y
ZXZpc2lvbkZvclJlcG9zaXRvcnkpOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvdjMvcGFnZXMv
YW5hbHlzaXMtdGFzay1wYWdlLmpzOgorICAgICAgICAoQW5hbHlzaXNUYXNrUGFnZSk6CisgICAg
ICAgIChBbmFseXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5yZW5kZXIpOiBSZW1vdmVkIHRoZSByZWZl
cmVuY2UgdG8gdjIgVUkgc2luY2UgdjMgVUkgaXMgbm93IHN0cmljdGx5IG1vcmUgcG93ZXJmdWwK
KyAgICAgICAgdGhhbiB2MiBVSS4gQWxzbyB1cGRhdGUgdGhlIHJvb3Qgc2V0IG1hcHMgaW4gZWFj
aCBmb3JtIGhlcmUuCisgICAgICAgIChBbmFseXNpc1Rhc2tQYWdlLnByb3RvdHlwZS5fcmV0cnlD
dXJyZW50VGVzdEdyb3VwKTogTm8gbG9uZ2VyIHRha2VzIHVudXNlZCBuYW1lIGFyZ3VtZW50IGFz
IGl0IGdvdCByZW1vdmVkCisgICAgICAgIGZyb20gVGVzdEdyb3VwRm9ybS4KKyAgICAgICAgKEFu
YWx5c2lzVGFza1BhZ2UucHJvdG90eXBlLl9jaGFydFNlbGVjdGlvbkRpZENoYW5nZSk6IE5vIGxv
bmdlciB1cGRhdGVzIHRoZSBkaXNhYmxlZC1uZXNzIGhlcmUgc2luY2UgaXQncyBub3cKKyAgICAg
ICAgZG9uZSBpbiByZW5kZXIoKSB2aWEgc2V0Um9vdFNldE1hcCgpLgorICAgICAgICAoQW5hbHlz
aXNUYXNrUGFnZS5wcm90b3R5cGUuX2NyZWF0ZU5ld1Rlc3RHcm91cEZyb21DaGFydCk6IE5vdyB0
YWtlcyByb290U2V0TWFwIGFzIGFuIGFyZ3VtZW50LgorICAgICAgICAoQW5hbHlzaXNUYXNrUGFn
ZS5wcm90b3R5cGUuX3NlbGVjdGVkUm93SW5BbmFseXNpc1Jlc3VsdHNWaWV3ZXIpOiBObyBsb25n
ZXIgdXBkYXRlcyB0aGUgZGlzYWJsZWQtbmVzcyBoZXJlCisgICAgICAgIHNpbmNlIGl0J3Mgbm93
IGRvbmUgaW4gcmVuZGVyKCkgdmlhIHNldFJvb3RTZXRNYXAoKS4KKyAgICAgICAgKEFuYWx5c2lz
VGFza1BhZ2UucHJvdG90eXBlLl9jcmVhdGVOZXdUZXN0R3JvdXBGcm9tVmlld2VyKTogTm93IHRh
a2VzIHJvb3RTZXRNYXAgYXMgYW4gYXJndW1lbnQuCisgICAgICAgIChBbmFseXNpc1Rhc2tQYWdl
LnByb3RvdHlwZS5fY3JlYXRlVGVzdEdyb3VwQWZ0ZXJWZXJpZnlpbmdSb290U2V0TGlzdCk6IFRh
a2UgYSBkaWN0aW9uYXJ5IG9mIHJvb3Qgc2V0IGxhYmVscworICAgICAgICBzdWNoIGFzIEEgYW5k
IEIsIHdoaWNoIG1hcHMgdG8gYSBSb290U2V0IG9yIGEgbmV3bHktYWRkZWQgQ3VzdG9tUm9vdFNl
dC4KKyAgICAgICAgKEFuYWx5c2lzVGFza1BhZ2UuaHRtbFRlbXBsYXRlKTogVXNlIGN1c3RvbWl6
YWJsZS10ZXN0LWdyb3VwLWZvcm0gZm9yIGNyZWF0aW5nIGEgbmV3IEEvQiB0ZXN0aW5nIGdyb3Vw
LiBSZXRyeQorICAgICAgICBmb3JtIHdpbGwgY29udGludWUgdG8gdXNlIFRlc3RHcm91cEZvcm0g
c2luY2UgY3VzdG9taXppbmcgcmV2aXNpb25zIGlzIG5vbi1zZW5zaWNhbCBpbiByZXRyaWVzLgor
ICAgICAgICAoQW5hbHlzaXNUYXNrUGFnZS5jc3NUZW1wbGF0ZSk6IFVwZGF0ZWQgdGhlIHN0eWxl
LgorCiAyMDE2LTAyLTE2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIHYzIFVJIGhhcyB0aGUgY2FwYWJpbGl0eSB0byBzY2hlZHVsZSBhbiBBL0IgdGVzdGluZyBp
biBhIHNwZWNpZmljIHJhbmdlCkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L3YzL2luZGV4Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9pbmRleC5odG1sCShyZXZpc2lvbiAxOTY3MTApCisrKyBXZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3YzL2luZGV4Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2
LDcgQEAgUnVuIHRvb2xzL2J1bmRsZS12My1zY3JpcHRzIHRvIHNwZWVkIHVwIAogICAgICAgICA8
c2NyaXB0IHNyYz0iY29tcG9uZW50cy9hbmFseXNpcy1yZXN1bHRzLXZpZXdlci5qcyI+PC9zY3Jp
cHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSJjb21wb25lbnRzL3Rlc3QtZ3JvdXAtcmVzdWx0cy10
YWJsZS5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSJjb21wb25lbnRzL3Rlc3Qt
Z3JvdXAtZm9ybS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJjb21wb25lbnRz
L2N1c3RvbWl6YWJsZS10ZXN0LWdyb3VwLWZvcm0uanMiPjwvc2NyaXB0PgogICAgICAgICA8c2Ny
aXB0IHNyYz0iY29tcG9uZW50cy9jaGFydC1zdHlsZXMuanMiPjwvc2NyaXB0PgogICAgICAgICA8
c2NyaXB0IHNyYz0iY29tcG9uZW50cy9jaGFydC1wYW5lLWJhc2UuanMiPjwvc2NyaXB0PgogICAg
ICAgICA8c2NyaXB0IHNyYz0icGFnZXMvcGFnZS5qcyI+PC9zY3JpcHQ+CkluZGV4OiBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvY3VzdG9taXphYmxlLXRlc3Qt
Z3JvdXAtZm9ybS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL3YzL2NvbXBvbmVudHMvY3VzdG9taXphYmxlLXRlc3QtZ3JvdXAtZm9ybS5qcwkocmV2aXNp
b24gMCkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9j
dXN0b21pemFibGUtdGVzdC1ncm91cC1mb3JtLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTc0IEBACisKK2NsYXNzIEN1c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0gZXh0ZW5kcyBUZXN0R3Jv
dXBGb3JtIHsKKworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCdjdXN0
b21pemFibGUtdGVzdC1ncm91cC1mb3JtJyk7CisgICAgICAgIHRoaXMuX3Jvb3RTZXRNYXAgPSBu
dWxsOworICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IHRydWU7CisgICAgICAgIHRoaXMuX3JlbmRl
cmVkUmVwb3NpdG9yeWxpc3QgPSBudWxsOworICAgICAgICB0aGlzLl9jdXN0b21pemVkID0gZmFs
c2U7CisgICAgICAgIHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2EnKS5vbmNsaWNrID0g
dGhpcy5fY3VzdG9taXplLmJpbmQodGhpcyk7CisgICAgfQorCisgICAgc2V0Um9vdFNldE1hcCht
YXApCisgICAgeworICAgICAgICB0aGlzLl9yb290U2V0TWFwID0gbWFwOworICAgICAgICB0aGlz
Ll9jdXN0b21pemVkID0gZmFsc2U7CisgICAgICAgIHRoaXMuc2V0RGlzYWJsZWQoIW1hcCk7Cisg
ICAgfQorCisgICAgX3N1Ym1pdHRlZCgpCisgICAgeworICAgICAgICBpZiAodGhpcy5fc3RhcnRD
YWxsYmFjaykKKyAgICAgICAgICAgIHRoaXMuX3N0YXJ0Q2FsbGJhY2sodGhpcy5jb250ZW50KCku
cXVlcnlTZWxlY3RvcignLm5hbWUnKS52YWx1ZSwgdGhpcy5fcmVwZXRpdGlvbkNvdW50LCB0aGlz
Ll9jb21wdXRlUm9vdFNldE1hcCgpKTsKKyAgICB9CisKKyAgICBfY3VzdG9taXplKGV2ZW50KQor
ICAgIHsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgdGhpcy5fY3Vz
dG9taXplZCA9IHRydWU7CisgICAgICAgIHRoaXMucmVuZGVyKCk7CisgICAgfQorCisgICAgX2Nv
bXB1dGVSb290U2V0TWFwKCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Jv
b3RTZXRNYXApOworICAgICAgICBpZiAoIXRoaXMuX2N1c3RvbWl6ZWQpCisgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5fcm9vdFNldE1hcDsKKworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9y
ZW5kZXJlZFJlcG9zaXRvcnlsaXN0KTsKKyAgICAgICAgdmFyIG1hcCA9IHt9OworICAgICAgICBm
b3IgKHZhciBsYWJlbCBpbiB0aGlzLl9yb290U2V0TWFwKSB7CisgICAgICAgICAgICB2YXIgY3Vz
dG9tUm9vdFNldCA9IG5ldyBDdXN0b21Sb290U2V0OworICAgICAgICAgICAgZm9yICh2YXIgcmVw
b3NpdG9yeSBvZiB0aGlzLl9yZW5kZXJlZFJlcG9zaXRvcnlsaXN0KSB7CisgICAgICAgICAgICAg
ICAgdmFyIGlkID0gQ3VzdG9taXphYmxlVGVzdEdyb3VwRm9ybS5faWRGb3JMYWJlbEFuZFJlcG9z
aXRvcnkobGFiZWwsIHJlcG9zaXRvcnkpOworICAgICAgICAgICAgICAgIHZhciByZXZpc2lvbiA9
IHRoaXMuY29udGVudCgpLmdldEVsZW1lbnRCeUlkKGlkKS52YWx1ZTsKKyAgICAgICAgICAgICAg
ICBjb25zb2xlLmFzc2VydChyZXZpc2lvbik7CisgICAgICAgICAgICAgICAgaWYgKHJldmlzaW9u
KQorICAgICAgICAgICAgICAgICAgICBjdXN0b21Sb290U2V0LnNldFJldmlzaW9uRm9yUmVwb3Np
dG9yeShyZXBvc2l0b3J5LCByZXZpc2lvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBt
YXBbbGFiZWxdID0gY3VzdG9tUm9vdFNldDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbWFw
OworICAgIH0KKworICAgIHJlbmRlcigpCisgICAgeworICAgICAgICBzdXBlci5yZW5kZXIoKTsK
KyAgICAgICAgdGhpcy5jb250ZW50KCkucXVlcnlTZWxlY3RvcignLmN1c3RvbWl6ZS1saW5rJyku
c3R5bGUuZGlzcGxheSA9IHRoaXMuX2Rpc2FibGVkID8gJ25vbmUnIDogbnVsbDsKKworICAgICAg
ICBpZiAoIXRoaXMuX2N1c3RvbWl6ZWQpIHsKKyAgICAgICAgICAgIHRoaXMucmVuZGVyUmVwbGFj
ZSh0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcuY3VzdG9tLXRhYmxlLWNvbnRhaW5lcicp
LCBbXSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgdmFyIG1hcCA9
IHRoaXMuX3Jvb3RTZXRNYXA7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1hcCk7CisKKyAgICAg
ICAgdmFyIHJlcG9zaXRvcnlTZXQgPSBuZXcgU2V0OworICAgICAgICB2YXIgcm9vdFNldExhYmVs
cyA9IFtdOworICAgICAgICBmb3IgKHZhciBsYWJlbCBpbiBtYXApIHsKKyAgICAgICAgICAgIGZv
ciAodmFyIHJlcG9zaXRvcnkgb2YgbWFwW2xhYmVsXS5yZXBvc2l0b3JpZXMoKSkKKyAgICAgICAg
ICAgICAgICByZXBvc2l0b3J5U2V0LmFkZChyZXBvc2l0b3J5KTsKKyAgICAgICAgICAgIHJvb3RT
ZXRMYWJlbHMucHVzaChsYWJlbCk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9yZW5kZXJl
ZFJlcG9zaXRvcnlsaXN0ID0gUmVwb3NpdG9yeS5zb3J0QnlOYW1lUHJlZmVycmluZ09uZXNXaXRo
VVJMKEFycmF5LmZyb20ocmVwb3NpdG9yeVNldC52YWx1ZXMoKSkpOworCisgICAgICAgIHZhciBl
bGVtZW50ID0gQ29tcG9uZW50QmFzZS5jcmVhdGVFbGVtZW50OworICAgICAgICB0aGlzLnJlbmRl
clJlcGxhY2UodGhpcy5jb250ZW50KCkucXVlcnlTZWxlY3RvcignLmN1c3RvbS10YWJsZS1jb250
YWluZXInKSwKKyAgICAgICAgICAgIGVsZW1lbnQoJ3RhYmxlJywge2NsYXNzOiAnY3VzdG9tLXRh
YmxlJ30sIFsKKyAgICAgICAgICAgICAgICBlbGVtZW50KCd0aGVhZCcsCisgICAgICAgICAgICAg
ICAgICAgIGVsZW1lbnQoJ3RyJywKKyAgICAgICAgICAgICAgICAgICAgICAgIFtlbGVtZW50KCd0
ZCcsICdSZXBvc2l0b3J5JyksIHJvb3RTZXRMYWJlbHMubWFwKGZ1bmN0aW9uIChsYWJlbCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50KCd0ZCcsIHtjb2xzcGFu
OiByb290U2V0TGFiZWxzLmxlbmd0aCArIDF9LCBsYWJlbCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9KV0pKSwKKyAgICAgICAgICAgICAgICBlbGVtZW50KCd0Ym9keScsCisgICAgICAgICAg
ICAgICAgICAgIHRoaXMuX3JlbmRlcmVkUmVwb3NpdG9yeWxpc3QubWFwKGZ1bmN0aW9uIChyZXBv
c2l0b3J5KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbHMgPSBbZWxlbWVudCgn
dGgnLCByZXBvc2l0b3J5LmxhYmVsKCkpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAo
dmFyIGxhYmVsIGluIG1hcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxscy5wdXNo
KEN1c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0uX2NvbnN0cnVjdFJldmlzaW9uUmFkaW9CdXR0b25z
KG1hcCwgcmVwb3NpdG9yeSwgbGFiZWwpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBlbGVtZW50KCd0cicsIGNlbGxzKTsKKyAgICAgICAgICAgICAgICAgICAgfSkpXSkpOworICAg
IH0KKworICAgIHN0YXRpYyBfaWRGb3JMYWJlbEFuZFJlcG9zaXRvcnkobGFiZWwsIHJlcG9zaXRv
cnkpIHsgcmV0dXJuIGxhYmVsICsgJy0nICsgcmVwb3NpdG9yeS5pZCgpOyB9CisKKyAgICBzdGF0
aWMgX2NvbnN0cnVjdFJldmlzaW9uUmFkaW9CdXR0b25zKHJvb3RTZXRNYXAsIHJlcG9zaXRvcnks
IHJvd0xhYmVsKQorICAgIHsKKyAgICAgICAgdmFyIGlkID0gdGhpcy5faWRGb3JMYWJlbEFuZFJl
cG9zaXRvcnkocm93TGFiZWwsIHJlcG9zaXRvcnkpOworICAgICAgICB2YXIgZ3JvdXBOYW1lID0g
aWQgKyAnLWdyb3VwJzsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBDb21wb25lbnRCYXNlLmNyZWF0
ZUVsZW1lbnQ7CisgICAgICAgIHZhciByZXZpc2lvbkVkaXRvciA9IGVsZW1lbnQoJ2lucHV0Jywg
e2lkOiBpZH0pOworCisgICAgICAgIHZhciBub2RlcyA9IFtdOworICAgICAgICBmb3IgKHZhciBs
YWJlbFRvQ2hvb3NlIGluIHJvb3RTZXRNYXApIHsKKyAgICAgICAgICAgIHZhciBjb21taXQgPSBy
b290U2V0TWFwW2xhYmVsVG9DaG9vc2VdLmNvbW1pdEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSk7
CisgICAgICAgICAgICB2YXIgY2hlY2tlZCA9IGxhYmVsVG9DaG9vc2UgPT0gcm93TGFiZWw7Cisg
ICAgICAgICAgICB2YXIgcmFkaW9CdXR0b24gPSB0aGlzLl9jcmVhdGVSYWRpb0J1dHRvbihncm91
cE5hbWUsIHJldmlzaW9uRWRpdG9yLCBjb21taXQsIGNoZWNrZWQpOworICAgICAgICAgICAgaWYg
KGNoZWNrZWQpCisgICAgICAgICAgICAgICAgcmV2aXNpb25FZGl0b3IudmFsdWUgPSBjb21taXQg
PyBjb21taXQucmV2aXNpb24oKSA6ICcnOworICAgICAgICAgICAgbm9kZXMucHVzaChlbGVtZW50
KCd0ZCcsIGVsZW1lbnQoJ2xhYmVsJywgW3JhZGlvQnV0dG9uLCBsYWJlbFRvQ2hvb3NlXSkpKTsK
KyAgICAgICAgfQorICAgICAgICBub2Rlcy5wdXNoKGVsZW1lbnQoJ3RkJywgcmV2aXNpb25FZGl0
b3IpKTsKKworICAgICAgICByZXR1cm4gbm9kZXM7CisgICAgfQorCisgICAgc3RhdGljIF9jcmVh
dGVSYWRpb0J1dHRvbihncm91cE5hbWUsIHJldmlzaW9uRWRpdG9yLCBjb21taXQsIGNoZWNrZWQp
CisgICAgeworICAgICAgICB2YXIgYnV0dG9uID0gQ29tcG9uZW50QmFzZS5jcmVhdGVFbGVtZW50
KCdpbnB1dCcsIHsKKyAgICAgICAgICAgIHR5cGU6ICdyYWRpbycsCisgICAgICAgICAgICBuYW1l
OiBncm91cE5hbWUgKyAnLXJhZGlvJywKKyAgICAgICAgICAgIG9uY2hhbmdlOiBmdW5jdGlvbiAo
KSB7IHJldmlzaW9uRWRpdG9yLnZhbHVlID0gY29tbWl0ID8gY29tbWl0LnJldmlzaW9uKCkgOiAn
JzsgfSwKKyAgICAgICAgfSk7CisgICAgICAgIGlmIChjaGVja2VkKSAvLyBGSVhNRTogY3JlYXRl
RWxlbWVudCBzaG91bGQgYmUgYWJsZSB0byBzZXQgYm9vbGVhbiBhdHRyaWJ1dGUgcHJvcGVybHku
CisgICAgICAgICAgICBidXR0b24uY2hlY2tlZCA9IHRydWU7CisgICAgICAgIHJldHVybiBidXR0
b247CisgICAgfQorCisgICAgc3RhdGljIGNzc1RlbXBsYXRlKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBzdXBlci5jc3NUZW1wbGF0ZSgpICsgYAorICAgICAgICAgICAgLmN1c3RvbWl6ZS1saW5r
IHsKKyAgICAgICAgICAgICAgICBjb2xvcjogIzMzMzsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLmN1c3RvbWl6ZS1saW5rIGEgeworICAgICAgICAgICAgICAgIGNvbG9yOiBpbmhlcml0
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAuY3VzdG9tLXRhYmxlIHsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDFyZW0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLmN1
c3RvbS10YWJsZSwKKyAgICAgICAgICAgIC5jdXN0b20tdGFibGUgdGQsCisgICAgICAgICAgICAu
Y3VzdG9tLXRhYmxlIHRoIHsKKyAgICAgICAgICAgICAgICBmb250LXdlaWdodDogaW5oZXJpdDsK
KyAgICAgICAgICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOworICAgICAgICAgICAg
ICAgIGJvcmRlci10b3A6IHNvbGlkIDFweCAjZGRkOworICAgICAgICAgICAgICAgIGJvcmRlci1i
b3R0b206IHNvbGlkIDFweCAjZGRkOworICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuNHJlbSAw
LjJyZW07CisgICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC5jdXN0b20tdGFibGUgdGhlYWQgdGQsCisgICAgICAgICAgICAuY3Vz
dG9tLXRhYmxlIHRoIHsKKyAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBgOworICAgIH0KKworICAgIHN0YXRpYyBmb3JtQ29udGVu
dCgpCisgICAgeworICAgICAgICByZXR1cm4gYAorICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJu
YW1lIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iVGVzdCBncm91cCBuYW1lIj4KKyAgICAgICAg
ICAgICR7c3VwZXIuZm9ybUNvbnRlbnQoKX0KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdXN0
b21pemUtbGluayI+KDxhIGhyZWY9IiI+Q3VzdG9taXplPC9hPik8L3NwYW4+CisgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJjdXN0b20tdGFibGUtY29udGFpbmVyIj48L2Rpdj4KKyAgICAgICAgYDsK
KyAgICB9Cit9CisKK0NvbXBvbmVudEJhc2UuZGVmaW5lRWxlbWVudCgnY3VzdG9taXphYmxlLXRl
c3QtZ3JvdXAtZm9ybScsIEN1c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0pOwpJbmRleDogV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL3Rlc3QtZ3JvdXAtZm9ybS5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBv
bmVudHMvdGVzdC1ncm91cC1mb3JtLmpzCShyZXZpc2lvbiAxOTY3MTApCisrKyBXZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvdGVzdC1ncm91cC1mb3JtLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUyICsxLDcwIEBACiAKIGNsYXNzIFRlc3RHcm91cEZvcm0gZXh0
ZW5kcyBDb21wb25lbnRCYXNlIHsKIAotICAgIGNvbnN0cnVjdG9yKCkKKyAgICBjb25zdHJ1Y3Rv
cihuYW1lKQogICAgIHsKLSAgICAgICAgc3VwZXIoJ3Rlc3QtZ3JvdXAtZm9ybScpOworICAgICAg
ICBzdXBlcihuYW1lIHx8ICd0ZXN0LWdyb3VwLWZvcm0nKTsKICAgICAgICAgdGhpcy5fc3RhcnRD
YWxsYmFjayA9IG51bGw7Ci0gICAgICAgIHRoaXMuX3JlcGV0aXRpb25Db3VudENvbnRyb2wgPSB0
aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcucmVwZXRpdGlvbi1jb3VudCcpOwotICAgICAg
ICB0aGlzLl9yZXBldGl0aW9uQ291bnRDb250cm9sLnZhbHVlID0gNDsKLSAgICAgICAgdGhpcy5f
YnV0dG9uQ29udHJvbCA9IHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpOwor
ICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGZhbHNlOworICAgICAgICB0aGlzLl9sYWJlbCA9IHVu
ZGVmaW5lZDsKKyAgICAgICAgdGhpcy5fcmVwZXRpdGlvbkNvdW50ID0gNDsKKwogICAgICAgICB0
aGlzLl9uYW1lQ29udHJvbCA9IHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5uYW1lJyk7
Ci0gICAgICAgIHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2Zvcm0nKS5vbnN1Ym1pdCA9
IHRoaXMuX3N1Ym1pdHRlZC5iaW5kKHRoaXMpOworICAgICAgICB0aGlzLl9yZXBldGl0aW9uQ291
bnRDb250cm9sID0gdGhpcy5jb250ZW50KCkucXVlcnlTZWxlY3RvcignLnJlcGV0aXRpb24tY291
bnQnKTsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICB0aGlzLl9yZXBldGl0aW9u
Q291bnRDb250cm9sLm9uY2hhbmdlID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgc2VsZi5f
cmVwZXRpdGlvbkNvdW50ID0gc2VsZi5fcmVwZXRpdGlvbkNvdW50Q29udHJvbC52YWx1ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIHZhciBib3VuZFN1Ym1pdHRlZCA9IHRoaXMuX3N1Ym1pdHRlZC5i
aW5kKHRoaXMpOworICAgICAgICB0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCdmb3JtJyku
b25zdWJtaXQgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgICAgIGV2ZW50LnByZXZlbnRE
ZWZhdWx0KCk7CisgICAgICAgICAgICBib3VuZFN1Ym1pdHRlZCgpOworICAgICAgICB9CiAgICAg
fQogCiAgICAgc2V0U3RhcnRDYWxsYmFjayhjYWxsYmFjaykgeyB0aGlzLl9zdGFydENhbGxiYWNr
ID0gY2FsbGJhY2s7IH0KLSAgICBzZXROZWVkc05hbWUobmVlZHNOYW1lKSB7IHRoaXMuX25hbWVD
b250cm9sLnN0eWxlLmRpc3BsYXkgPSBuZWVkc05hbWUgPyBudWxsIDogJ25vbmUnOyB9Ci0gICAg
c2V0RGlzYWJsZWQoZGlzYWJsZWQpIHsgdGhpcy5fYnV0dG9uQ29udHJvbC5kaXNhYmxlZCA9IGRp
c2FibGVkOyB9CisgICAgc2V0RGlzYWJsZWQoZGlzYWJsZWQpIHsgdGhpcy5fZGlzYWJsZWQgPSAh
IWRpc2FibGVkOyB9CisgICAgc2V0TGFiZWwobGFiZWwpIHsgdGhpcy5fbGFiZWwgPSBsYWJlbDsg
fQorICAgIHNldFJlcGV0aXRpb25Db3VudChjb3VudCkgeyB0aGlzLl9yZXBldGl0aW9uQ291bnQg
PSBjb3VudDsgfQogCi0gICAgc2V0TGFiZWwobGFiZWwpIHsgdGhpcy5fYnV0dG9uQ29udHJvbC50
ZXh0Q29udGVudCA9IGxhYmVsOyB9Ci0gICAgc2V0UmVwZXRpdGlvbkNvdW50KGNvdW50KSB7IHRo
aXMuX3JlcGV0aXRpb25Db3VudENvbnRyb2wudmFsdWUgPSBjb3VudDsgfQorICAgIHJlbmRlcigp
CisgICAgeworICAgICAgICB2YXIgYnV0dG9uID0gdGhpcy5jb250ZW50KCkucXVlcnlTZWxlY3Rv
cignYnV0dG9uJyk7CisgICAgICAgIGlmICh0aGlzLl9sYWJlbCkKKyAgICAgICAgICAgIGJ1dHRv
bi50ZXh0Q29udGVudCA9IHRoaXMuX2xhYmVsOworICAgICAgICBidXR0b24uZGlzYWJsZWQgPSB0
aGlzLl9kaXNhYmxlZDsKKyAgICAgICAgdGhpcy5fcmVwZXRpdGlvbkNvdW50Q29udHJvbC52YWx1
ZSA9IHRoaXMuX3JlcGV0aXRpb25Db3VudDsKKyAgICB9CiAKLSAgICBfc3VibWl0dGVkKGV2ZW50
KQorICAgIF9zdWJtaXR0ZWQoKQogICAgIHsKLSAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQo
KTsKICAgICAgICAgaWYgKHRoaXMuX3N0YXJ0Q2FsbGJhY2spCi0gICAgICAgICAgICB0aGlzLl9z
dGFydENhbGxiYWNrKHRoaXMuX25hbWVDb250cm9sLnZhbHVlLCB0aGlzLl9yZXBldGl0aW9uQ291
bnRDb250cm9sLnZhbHVlKTsKKyAgICAgICAgICAgIHRoaXMuX3N0YXJ0Q2FsbGJhY2sodGhpcy5f
cmVwZXRpdGlvbkNvdW50KTsKICAgICB9CiAKICAgICBzdGF0aWMgaHRtbFRlbXBsYXRlKCkKICAg
ICB7CisgICAgICAgIHJldHVybiBgPGZvcm0+PGJ1dHRvbiB0eXBlPSJzdWJtaXQiPlN0YXJ0IEEv
QiB0ZXN0aW5nPC9idXR0b24+JHt0aGlzLmZvcm1Db250ZW50KCl9PC9mb3JtPmA7CisgICAgfQor
CisgICAgc3RhdGljIGZvcm1Db250ZW50KCkKKyAgICB7CiAgICAgICAgIHJldHVybiBgCi0gICAg
ICAgICAgICA8Zm9ybT4KLSAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCI+U3Rh
cnQgQS9CIHRlc3Rpbmc8L2J1dHRvbj4KLSAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9Im5h
bWUiIHR5cGU9InRleHQiPgotICAgICAgICAgICAgICAgIHdpdGgKLSAgICAgICAgICAgICAgICA8
c2VsZWN0IGNsYXNzPSJyZXBldGl0aW9uLWNvdW50Ij4KLSAgICAgICAgICAgICAgICAgICAgPG9w
dGlvbj4xPC9vcHRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxvcHRpb24+Mjwvb3B0aW9uPgot
ICAgICAgICAgICAgICAgICAgICA8b3B0aW9uPjM8L29wdGlvbj4KLSAgICAgICAgICAgICAgICAg
ICAgPG9wdGlvbj40PC9vcHRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxvcHRpb24+NTwvb3B0
aW9uPgotICAgICAgICAgICAgICAgICAgICA8b3B0aW9uPjY8L29wdGlvbj4KLSAgICAgICAgICAg
ICAgICAgICAgPG9wdGlvbj43PC9vcHRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxvcHRpb24+
ODwvb3B0aW9uPgotICAgICAgICAgICAgICAgICAgICA8b3B0aW9uPjk8L29wdGlvbj4KLSAgICAg
ICAgICAgICAgICAgICAgPG9wdGlvbj4xMDwvb3B0aW9uPgotICAgICAgICAgICAgICAgIDwvc2Vs
ZWN0PgotICAgICAgICAgICAgICAgIGl0ZXJhdGlvbnMgcGVyIHNldAotICAgICAgICAgICAgPC9m
b3JtPgorICAgICAgICAgICAgd2l0aAorICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz0icmVwZXRp
dGlvbi1jb3VudCI+CisgICAgICAgICAgICAgICAgPG9wdGlvbj4xPC9vcHRpb24+CisgICAgICAg
ICAgICAgICAgPG9wdGlvbj4yPC9vcHRpb24+CisgICAgICAgICAgICAgICAgPG9wdGlvbj4zPC9v
cHRpb24+CisgICAgICAgICAgICAgICAgPG9wdGlvbj40PC9vcHRpb24+CisgICAgICAgICAgICAg
ICAgPG9wdGlvbj41PC9vcHRpb24+CisgICAgICAgICAgICAgICAgPG9wdGlvbj42PC9vcHRpb24+
CisgICAgICAgICAgICAgICAgPG9wdGlvbj43PC9vcHRpb24+CisgICAgICAgICAgICAgICAgPG9w
dGlvbj44PC9vcHRpb24+CisgICAgICAgICAgICAgICAgPG9wdGlvbj45PC9vcHRpb24+CisgICAg
ICAgICAgICAgICAgPG9wdGlvbj4xMDwvb3B0aW9uPgorICAgICAgICAgICAgPC9zZWxlY3Q+Cisg
ICAgICAgICAgICBpdGVyYXRpb25zIHBlciBzZXQKICAgICAgICAgYDsKICAgICB9CiAKSW5kZXg6
IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3JlcG9zaXRvcnkuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMv
cmVwb3NpdG9yeS5qcwkocmV2aXNpb24gMTk2NzEwKQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy92My9tb2RlbHMvcmVwb3NpdG9yeS5qcwkod29ya2luZyBjb3B5KQpAQCAtMTks
NCArMTksMjAgQEAgY2xhc3MgUmVwb3NpdG9yeSBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAg
IHsKICAgICAgICAgcmV0dXJuICh0aGlzLl9ibGFtZVVybCB8fCAnJykucmVwbGFjZSgvXCQxL2cs
IGZyb20pLnJlcGxhY2UoL1wkMi9nLCB0byk7CiAgICAgfQorCisgICAgc3RhdGljIHNvcnRCeU5h
bWVQcmVmZXJyaW5nT25lc1dpdGhVUkwocmVwb3NpdG9yaWVzKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHJlcG9zaXRvcmllcy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7CisgICAgICAgICAgICBpZiAo
ISFhLl9ibGFtZVVybCA9PSAhIWIuX2JsYW1lVXJsKSB7CisgICAgICAgICAgICAgICAgaWYgKGEu
bmFtZSgpID4gYi5uYW1lKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKGEubmFtZSgpIDwgYi5uYW1lKCkpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoYi5fYmxhbWVVcmwpIC8vIGEgPiBiCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7
CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0pOworICAgIH0KKwogfQpJbmRleDog
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvcm9vdC1zZXQuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvcm9v
dC1zZXQuanMJKHJldmlzaW9uIDE5NjcxMCkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvdjMvbW9kZWxzL3Jvb3Qtc2V0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCwx
MiBAQCBjbGFzcyBSb290U2V0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKICAgICByZXBvc2l0
b3JpZXMoKSB7IHJldHVybiB0aGlzLl9yZXBvc2l0b3JpZXM7IH0KICAgICBjb21taXRGb3JSZXBv
c2l0b3J5KHJlcG9zaXRvcnkpIHsgcmV0dXJuIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcFty
ZXBvc2l0b3J5LmlkKCldOyB9CiAKKyAgICByZXZpc2lvbkZvclJlcG9zaXRvcnkocmVwb3NpdG9y
eSkKKyAgICB7CisgICAgICAgIHZhciBjb21taXQgPSB0aGlzLl9yZXBvc2l0b3J5VG9Db21taXRN
YXBbcmVwb3NpdG9yeS5pZCgpXTsKKyAgICAgICAgcmV0dXJuIGNvbW1pdCA/IGNvbW1pdC5yZXZp
c2lvbigpIDogbnVsbDsKKyAgICB9CisKICAgICBsYXRlc3RDb21taXRUaW1lKCkKICAgICB7CiAg
ICAgICAgIGlmICh0aGlzLl9sYXRlc3RDb21taXRUaW1lID09IG51bGwpIHsKQEAgLTgxLDMgKzg3
LDIyIEBAIGNsYXNzIE1lYXN1cmVtZW50Um9vdFNldCBleHRlbmRzIFJvb3RTZXQKICAgICAgICAg
cmV0dXJuIFJvb3RTZXQuZmluZEJ5SWQocm9vdFNldElkKSB8fCAobmV3IE1lYXN1cmVtZW50Um9v
dFNldChyb290U2V0SWQsIHJldmlzaW9uTGlzdCkpOwogICAgIH0KIH0KKworY2xhc3MgQ3VzdG9t
Um9vdFNldCB7CisKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICB0aGlzLl9yZXZp
c2lvbkxpc3RCeVJlcG9zaXRvcnkgPSBuZXcgTWFwOworICAgIH0KKworICAgIHNldFJldmlzaW9u
Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5LCByZXZpc2lvbikKKyAgICB7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHJlcG9zaXRvcnkgaW5zdGFuY2VvZiBSZXBvc2l0b3J5KTsKKyAgICAgICAgdGhp
cy5fcmV2aXNpb25MaXN0QnlSZXBvc2l0b3J5LnNldChyZXBvc2l0b3J5LCByZXZpc2lvbik7Cisg
ICAgfQorCisgICAgcmVwb3NpdG9yaWVzKCkgeyByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9yZXZp
c2lvbkxpc3RCeVJlcG9zaXRvcnkua2V5cygpKTsgfQorICAgIHJldmlzaW9uRm9yUmVwb3NpdG9y
eShyZXBvc2l0b3J5KSB7IHJldHVybiB0aGlzLl9yZXZpc2lvbkxpc3RCeVJlcG9zaXRvcnkuZ2V0
KHJlcG9zaXRvcnkpOyB9CisKK30KKwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanMJ
KHJldmlzaW9uIDE5NjcxMCkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMv
cGFnZXMvYW5hbHlzaXMtdGFzay1wYWdlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC02MywxNiArNjMs
MTQgQEAgY2xhc3MgQW5hbHlzaXNUYXNrUGFnZSBleHRlbmRzIFBhZ2VXaXRoSAogICAgICAgICB0
aGlzLl9idWdUcmFja2VyQ29udHJvbCA9IHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5i
dWctdHJhY2tlci1jb250cm9sJyk7CiAgICAgICAgIHRoaXMuX2J1Z051bWJlckNvbnRyb2wgPSB0
aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcuYnVnLW51bWJlci1jb250cm9sJyk7CiAKLSAg
ICAgICAgdGhpcy5fbmV3VGVzdEdyb3VwRm9ybUZvckNoYXJ0ID0gdGhpcy5jb250ZW50KCkucXVl
cnlTZWxlY3RvcignLm92ZXJ2aWV3LWNoYXJ0IHRlc3QtZ3JvdXAtZm9ybScpLmNvbXBvbmVudCgp
OworICAgICAgICB0aGlzLl9uZXdUZXN0R3JvdXBGb3JtRm9yQ2hhcnQgPSB0aGlzLmNvbnRlbnQo
KS5xdWVyeVNlbGVjdG9yKCcub3ZlcnZpZXctY2hhcnQgY3VzdG9taXphYmxlLXRlc3QtZ3JvdXAt
Zm9ybScpLmNvbXBvbmVudCgpOwogICAgICAgICB0aGlzLl9uZXdUZXN0R3JvdXBGb3JtRm9yQ2hh
cnQuc2V0U3RhcnRDYWxsYmFjayh0aGlzLl9jcmVhdGVOZXdUZXN0R3JvdXBGcm9tQ2hhcnQuYmlu
ZCh0aGlzKSk7CiAKLSAgICAgICAgdGhpcy5fbmV3VGVzdEdyb3VwRm9ybUZvclZpZXdlciA9IHRo
aXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5hbmFseXNpcy1yZXN1bHRzLXZpZXcgdGVzdC1n
cm91cC1mb3JtJykuY29tcG9uZW50KCk7CisgICAgICAgIHRoaXMuX25ld1Rlc3RHcm91cEZvcm1G
b3JWaWV3ZXIgPSB0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcuYW5hbHlzaXMtcmVzdWx0
cy12aWV3IGN1c3RvbWl6YWJsZS10ZXN0LWdyb3VwLWZvcm0nKS5jb21wb25lbnQoKTsKICAgICAg
ICAgdGhpcy5fbmV3VGVzdEdyb3VwRm9ybUZvclZpZXdlci5zZXRTdGFydENhbGxiYWNrKHRoaXMu
X2NyZWF0ZU5ld1Rlc3RHcm91cEZyb21WaWV3ZXIuYmluZCh0aGlzKSk7Ci0gICAgICAgIHRoaXMu
X3NlbGVjdGVkUm93SW5BbmFseXNpc1Jlc3VsdHNWaWV3ZXIoKTsKIAogICAgICAgICB0aGlzLl9y
ZXRyeUZvcm0gPSB0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcudGVzdC1ncm91cC1yZXRy
eS1mb3JtJykuZmlyc3RDaGlsZC5jb21wb25lbnQoKTsKICAgICAgICAgdGhpcy5fcmV0cnlGb3Jt
LnNldFN0YXJ0Q2FsbGJhY2sodGhpcy5fcmV0cnlDdXJyZW50VGVzdEdyb3VwLmJpbmQodGhpcykp
OwotICAgICAgICB0aGlzLl9yZXRyeUZvcm0uc2V0TmVlZHNOYW1lKGZhbHNlKTsKICAgICB9CiAK
ICAgICB0aXRsZSgpIHsgcmV0dXJuIHRoaXMuX3Rhc2sgPyB0aGlzLl90YXNrLmxhYmVsKCkgOiAn
QW5hbHlzaXMgVGFzayc7IH0KQEAgLTE5OCwxMiArMTk2LDYgQEAgY2xhc3MgQW5hbHlzaXNUYXNr
UGFnZSBleHRlbmRzIFBhZ2VXaXRoSAogCiAgICAgICAgIHRoaXMuY29udGVudCgpLnF1ZXJ5U2Vs
ZWN0b3IoJy5lcnJvci1tZXNzYWdlJykudGV4dENvbnRlbnQgPSB0aGlzLl9lcnJvck1lc3NhZ2Ug
fHwgJyc7CiAKLSAgICAgICAgaWYgKHRoaXMuX3Rhc2spIHsKLSAgICAgICAgICAgIHZhciB2MlVS
TCA9IGAvdjIvIy9hbmFseXNpcy90YXNrLyR7dGhpcy5fdGFzay5pZCgpfWA7Ci0gICAgICAgICAg
ICB0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcuZXJyb3ItbWVzc2FnZScpLmlubmVySFRN
TCA9Ci0gICAgICAgICAgICAgICAgYDxwPlRvIHNjaGVkdWxlIGEgY3VzdG9tIEEvQiB0ZXN0aW5n
LCB1c2UgPGEgaHJlZj0iJHt2MlVSTH0iPnYyIFVJPC9hPi48L3A+YDsKLSAgICAgICAgfQotCiAg
ICAgICAgIHRoaXMuX2NoYXJ0UGFuZS5yZW5kZXIoKTsKIAogICAgICAgICB2YXIgZWxlbWVudCA9
IENvbXBvbmVudEJhc2UuY3JlYXRlRWxlbWVudDsKQEAgLTI1NSwxNCArMjQ3LDIzIEBAIGNsYXNz
IEFuYWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEgKICAgICAgICAgICAgICAgICB9KSk7
CiAgICAgICAgIH0KIAorICAgICAgICB2YXIgc2VsZWN0ZWRSYW5nZSA9IHRoaXMuX2FuYWx5c2lz
UmVzdWx0c1ZpZXdlci5zZWxlY3RlZFJhbmdlKCk7CisgICAgICAgIHZhciBhID0gc2VsZWN0ZWRS
YW5nZVsnQSddOworICAgICAgICB2YXIgYiA9IHNlbGVjdGVkUmFuZ2VbJ0InXTsKKyAgICAgICAg
dGhpcy5fbmV3VGVzdEdyb3VwRm9ybUZvclZpZXdlci5zZXRSb290U2V0TWFwKGEgJiYgYiA/IHsn
QSc6IGEucm9vdFNldCgpLCAnQic6IGIucm9vdFNldCgpfSA6IG51bGwpOworICAgICAgICB0aGlz
Ll9uZXdUZXN0R3JvdXBGb3JtRm9yVmlld2VyLnJlbmRlcigpOworCisgICAgICAgIHRoaXMuX3Jl
bmRlclRlc3RHcm91cExpc3QoKTsKKyAgICAgICAgdGhpcy5fcmVuZGVyVGVzdEdyb3VwRGV0YWls
cygpOworCisgICAgICAgIHZhciBwb2ludHMgPSB0aGlzLl9jaGFydFBhbmUuc2VsZWN0ZWRQb2lu
dHMoKTsKKyAgICAgICAgdGhpcy5fbmV3VGVzdEdyb3VwRm9ybUZvckNoYXJ0LnNldFJvb3RTZXRN
YXAocG9pbnRzICYmIHBvaW50cy5sZW5ndGggPj0gMiA/CisgICAgICAgICAgICAgICAgeydBJzog
cG9pbnRzWzBdLnJvb3RTZXQoKSwgJ0InOiBwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdLnJvb3RT
ZXQoKX0gOiBudWxsKTsKICAgICAgICAgdGhpcy5fbmV3VGVzdEdyb3VwRm9ybUZvckNoYXJ0LnJl
bmRlcigpOwogCiAgICAgICAgIHRoaXMuX2FuYWx5c2lzUmVzdWx0c1ZpZXdlci5zZXRDdXJyZW50
VGVzdEdyb3VwKHRoaXMuX2N1cnJlbnRUZXN0R3JvdXApOwogICAgICAgICB0aGlzLl9hbmFseXNp
c1Jlc3VsdHNWaWV3ZXIucmVuZGVyKCk7CiAKLSAgICAgICAgdGhpcy5fcmVuZGVyVGVzdEdyb3Vw
TGlzdCgpOwotICAgICAgICB0aGlzLl9yZW5kZXJUZXN0R3JvdXBEZXRhaWxzKCk7Ci0KICAgICAg
ICAgdGhpcy5fdGVzdEdyb3VwUmVzdWx0c1RhYmxlLnJlbmRlcigpOwogCiAgICAgICAgIEluc3Ry
dW1lbnRhdGlvbi5lbmRNZWFzdXJpbmdUaW1lKCdBbmFseXNpc1Rhc2tQYWdlJywgJ3JlbmRlcicp
OwpAQCAtNDE3LDY4ICs0MTgsNzAgQEAgY2xhc3MgQW5hbHlzaXNUYXNrUGFnZSBleHRlbmRzIFBh
Z2VXaXRoSAogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBfcmV0cnlDdXJyZW50VGVzdEdyb3Vw
KHVudXNlZE5hbWUsIHJlcGV0aXRpb25Db3VudCkKKyAgICBfcmV0cnlDdXJyZW50VGVzdEdyb3Vw
KHJlcGV0aXRpb25Db3VudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2N1
cnJlbnRUZXN0R3JvdXApOwogICAgICAgICB2YXIgdGVzdEdyb3VwID0gdGhpcy5fY3VycmVudFRl
c3RHcm91cDsKICAgICAgICAgdmFyIG5ld05hbWUgPSB0aGlzLl9jcmVhdGVSZXRyeU5hbWVGb3JU
ZXN0R3JvdXAodGVzdEdyb3VwLm5hbWUoKSk7CiAgICAgICAgIHZhciByb290U2V0TGlzdCA9IHRl
c3RHcm91cC5yZXF1ZXN0ZWRSb290U2V0cygpOwotICAgICAgICB2YXIgcm9vdFNldExhYmVscyA9
IHJvb3RTZXRMaXN0Lm1hcChmdW5jdGlvbiAocm9vdFNldCkgeyByZXR1cm4gdGVzdEdyb3VwLmxh
YmVsRm9yUm9vdFNldChyb290U2V0KTsgfSk7Ci0gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVU
ZXN0R3JvdXBBZnRlclZlcmlmeWluZ1Jvb3RTZXRMaXN0KG5ld05hbWUsIHJlcGV0aXRpb25Db3Vu
dCwgcm9vdFNldExpc3QsIHJvb3RTZXRMYWJlbHMpOworCisgICAgICAgIHZhciByb290U2V0TWFw
ID0ge307CisgICAgICAgIGZvciAodmFyIHJvb3RTZXQgb2Ygcm9vdFNldExpc3QpCisgICAgICAg
ICAgICByb290U2V0TWFwW3Rlc3RHcm91cC5sYWJlbEZvclJvb3RTZXQocm9vdFNldCldID0gcm9v
dFNldDsKKworICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlVGVzdEdyb3VwQWZ0ZXJWZXJpZnlp
bmdSb290U2V0TGlzdChuZXdOYW1lLCByZXBldGl0aW9uQ291bnQsIHJvb3RTZXRNYXApOwogICAg
IH0KIAogICAgIF9jaGFydFNlbGVjdGlvbkRpZENoYW5nZSgpCiAgICAgewotICAgICAgICB2YXIg
cG9pbnRzID0gdGhpcy5fY2hhcnRQYW5lLnNlbGVjdGVkUG9pbnRzKCk7Ci0gICAgICAgIHRoaXMu
X25ld1Rlc3RHcm91cEZvcm1Gb3JDaGFydC5zZXREaXNhYmxlZCghcG9pbnRzIHx8IHBvaW50cy5s
ZW5ndGggPCAyKTsKKyAgICAgICAgdGhpcy5yZW5kZXIoKTsKICAgICB9CiAKLSAgICBfY3JlYXRl
TmV3VGVzdEdyb3VwRnJvbUNoYXJ0KG5hbWUsIHJlcGV0aXRpb25Db3VudCkKKyAgICBfY3JlYXRl
TmV3VGVzdEdyb3VwRnJvbUNoYXJ0KG5hbWUsIHJlcGV0aXRpb25Db3VudCwgcm9vdFNldE1hcCkK
ICAgICB7Ci0gICAgICAgIHZhciBwb2ludHMgPSB0aGlzLl9jaGFydFBhbmUuc2VsZWN0ZWRQb2lu
dHMoKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQocG9pbnRzICYmIHBvaW50cy5sZW5ndGggPj0g
Mik7Ci0gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVUZXN0R3JvdXBBZnRlclZlcmlmeWluZ1Jv
b3RTZXRMaXN0KG5hbWUsIHJlcGV0aXRpb25Db3VudCwKLSAgICAgICAgICAgIFtwb2ludHNbMF0u
cm9vdFNldCgpLCBwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdLnJvb3RTZXQoKV0sIFsnQScsICdC
J10pOworICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlVGVzdEdyb3VwQWZ0ZXJWZXJpZnlpbmdS
b290U2V0TGlzdChuYW1lLCByZXBldGl0aW9uQ291bnQsIHJvb3RTZXRNYXApOwogICAgIH0KIAog
ICAgIF9zZWxlY3RlZFJvd0luQW5hbHlzaXNSZXN1bHRzVmlld2VyKCkKICAgICB7Ci0gICAgICAg
IHZhciBzZWxlY3RlZFJhbmdlID0gdGhpcy5fYW5hbHlzaXNSZXN1bHRzVmlld2VyLnNlbGVjdGVk
UmFuZ2UoKTsKLSAgICAgICAgdGhpcy5fbmV3VGVzdEdyb3VwRm9ybUZvclZpZXdlci5zZXREaXNh
YmxlZCghc2VsZWN0ZWRSYW5nZVsnQSddIHx8ICFzZWxlY3RlZFJhbmdlWydCJ10pOworICAgICAg
ICB0aGlzLnJlbmRlcigpOwogICAgIH0KIAotICAgIF9jcmVhdGVOZXdUZXN0R3JvdXBGcm9tVmll
d2VyKG5hbWUsIHJlcGV0aXRpb25Db3VudCkKKyAgICBfY3JlYXRlTmV3VGVzdEdyb3VwRnJvbVZp
ZXdlcihuYW1lLCByZXBldGl0aW9uQ291bnQsIHJvb3RTZXRNYXApCiAgICAgewotICAgICAgICB2
YXIgc2VsZWN0ZWRSYW5nZSA9IHRoaXMuX2FuYWx5c2lzUmVzdWx0c1ZpZXdlci5zZWxlY3RlZFJh
bmdlKCk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNlbGVjdGVkUmFuZ2UgJiYgc2VsZWN0ZWRS
YW5nZVsnQSddICYmIHNlbGVjdGVkUmFuZ2VbJ0InXSk7Ci0gICAgICAgIHJldHVybiB0aGlzLl9j
cmVhdGVUZXN0R3JvdXBBZnRlclZlcmlmeWluZ1Jvb3RTZXRMaXN0KG5hbWUsIHJlcGV0aXRpb25D
b3VudCwKLSAgICAgICAgICAgIFtzZWxlY3RlZFJhbmdlWydBJ10ucm9vdFNldCgpLCBzZWxlY3Rl
ZFJhbmdlWydCJ10ucm9vdFNldCgpXSwgWydBJywgJ0InXSk7CisgICAgICAgIHJldHVybiB0aGlz
Ll9jcmVhdGVUZXN0R3JvdXBBZnRlclZlcmlmeWluZ1Jvb3RTZXRMaXN0KG5hbWUsIHJlcGV0aXRp
b25Db3VudCwgcm9vdFNldE1hcCk7CiAgICAgfQogCi0gICAgX2NyZWF0ZVRlc3RHcm91cEFmdGVy
VmVyaWZ5aW5nUm9vdFNldExpc3QodGVzdEdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCByb290
U2V0TGlzdCwgcm9vdFNldExhYmVscykKKyAgICBfY3JlYXRlVGVzdEdyb3VwQWZ0ZXJWZXJpZnlp
bmdSb290U2V0TGlzdCh0ZXN0R3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIHJvb3RTZXRNYXAp
CiAgICAgewogICAgICAgICBpZiAodGhpcy5faGFzRHVwbGljYXRlVGVzdEdyb3VwTmFtZSh0ZXN0
R3JvdXBOYW1lKSkKICAgICAgICAgICAgIGFsZXJ0KGBUaGVyZSBpcyBhbHJlYWR5IGEgdGVzdCBn
cm91cCBuYW1lZCAiJHt0ZXN0R3JvdXBOYW1lfSJgKTsKIAogICAgICAgICB2YXIgcm9vdFNldHNC
eU5hbWUgPSB7fTsKLSAgICAgICAgZm9yICh2YXIgcmVwb3NpdG9yeSBvZiByb290U2V0TGlzdFsw
XS5yZXBvc2l0b3JpZXMoKSkKLSAgICAgICAgICAgIHJvb3RTZXRzQnlOYW1lW3JlcG9zaXRvcnku
bmFtZSgpXSA9IFtdOworICAgICAgICB2YXIgZmlyc3RMYWJlbDsKKyAgICAgICAgZm9yIChmaXJz
dExhYmVsIGluIHJvb3RTZXRNYXApIHsKKyAgICAgICAgICAgIHZhciByb290U2V0ID0gcm9vdFNl
dE1hcFtmaXJzdExhYmVsXTsKKyAgICAgICAgICAgIGZvciAodmFyIHJlcG9zaXRvcnkgb2Ygcm9v
dFNldC5yZXBvc2l0b3JpZXMoKSkKKyAgICAgICAgICAgICAgICByb290U2V0c0J5TmFtZVtyZXBv
c2l0b3J5Lm5hbWUoKV0gPSBbXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAKICAg
ICAgICAgdmFyIHNldEluZGV4ID0gMDsKLSAgICAgICAgZm9yICh2YXIgcm9vdFNldCBvZiByb290
U2V0TGlzdCkgeworICAgICAgICBmb3IgKHZhciBsYWJlbCBpbiByb290U2V0TWFwKSB7CisgICAg
ICAgICAgICB2YXIgcm9vdFNldCA9IHJvb3RTZXRNYXBbbGFiZWxdOwogICAgICAgICAgICAgZm9y
ICh2YXIgcmVwb3NpdG9yeSBvZiByb290U2V0LnJlcG9zaXRvcmllcygpKSB7CiAgICAgICAgICAg
ICAgICAgdmFyIGxpc3QgPSByb290U2V0c0J5TmFtZVtyZXBvc2l0b3J5Lm5hbWUoKV07CiAgICAg
ICAgICAgICAgICAgaWYgKCFsaXN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGFsZXJ0KGBTZXQg
JHtyb290U2V0TGFiZWxzW3NldEluZGV4XX0gc3BlY2lmaWVzICR7cmVwb3NpdG9yeS5sYWJlbCgp
fSBidXQgc2V0ICR7cm9vdFNldExhYmVsc1swXX0gZG9lcyBub3QuYCk7CisgICAgICAgICAgICAg
ICAgICAgIGFsZXJ0KGBTZXQgJHtsYWJlbH0gc3BlY2lmaWVzICR7cmVwb3NpdG9yeS5sYWJlbCgp
fSBidXQgc2V0ICR7Zmlyc3RMYWJlbH0gZG9lcyBub3QuYCk7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBsaXN0LnB1
c2gocm9vdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpLnJldmlzaW9uKCkpOwor
ICAgICAgICAgICAgICAgIGxpc3QucHVzaChyb290U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeShy
ZXBvc2l0b3J5KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzZXRJbmRleCsrOwogICAg
ICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiByb290U2V0c0J5TmFtZSkgewogICAgICAgICAgICAg
ICAgIHZhciBsaXN0ID0gcm9vdFNldHNCeU5hbWVbbmFtZV07CiAgICAgICAgICAgICAgICAgaWYg
KGxpc3QubGVuZ3RoIDwgc2V0SW5kZXgpIHsKLSAgICAgICAgICAgICAgICAgICAgYWxlcnQoYFNl
dCAke3Jvb3RTZXRMYWJlbHNbMF19IHNwZWNpZmllcyAke3JlcG9zaXRvcnkubGFiZWwoKX0gYnV0
IHNldCAke3Jvb3RTZXRMYWJlbHNbc2V0SW5kZXhdfSBkb2VzIG5vdC5gKTsKKyAgICAgICAgICAg
ICAgICAgICAgYWxlcnQoYFNldCAke2ZpcnN0TGFiZWx9IHNwZWNpZmllcyAke3JlcG9zaXRvcnku
bGFiZWwoKX0gYnV0IHNldCAke2xhYmVsfSBkb2VzIG5vdC5gKTsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNTU1
LDExICs1NTgsMTEgQEAgY2xhc3MgQW5hbHlzaXNUYXNrUGFnZSBleHRlbmRzIFBhZ2VXaXRoSAog
ICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJv
dmVydmlldy1jaGFydCI+CiAgICAgICAgICAgICAgICAgICAgIDxhbmFseXNpcy10YXNrLWNoYXJ0
LXBhbmU+PC9hbmFseXNpcy10YXNrLWNoYXJ0LXBhbmU+Ci0gICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9Im5ldy10ZXN0LWdyb3VwLWZvcm0iPjx0ZXN0LWdyb3VwLWZvcm0+PC90ZXN0LWdy
b3VwLWZvcm0+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5ldy10ZXN0
LWdyb3VwLWZvcm0iPjxjdXN0b21pemFibGUtdGVzdC1ncm91cC1mb3JtPjwvY3VzdG9taXphYmxl
LXRlc3QtZ3JvdXAtZm9ybT48L2Rpdj4KICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAg
ICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImFuYWx5c2lzLXJlc3VsdHMtdmlldyI+CiAgICAg
ICAgICAgICAgICAgICAgIDxhbmFseXNpcy1yZXN1bHRzLXZpZXdlcj48L2FuYWx5c2lzLXJlc3Vs
dHMtdmlld2VyPgotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuZXctdGVzdC1ncm91
cC1mb3JtIj48dGVzdC1ncm91cC1mb3JtPjwvdGVzdC1ncm91cC1mb3JtPjwvZGl2PgorICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuZXctdGVzdC1ncm91cC1mb3JtIj48Y3VzdG9taXph
YmxlLXRlc3QtZ3JvdXAtZm9ybT48L2N1c3RvbWl6YWJsZS10ZXN0LWdyb3VwLWZvcm0+PC9kaXY+
CiAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNs
YXNzPSJ0ZXN0LWdyb3VwLXZpZXciPgogICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InRl
c3QtZ3JvdXAtbGlzdCI+PC91bD4KQEAgLTYxNSw3ICs2MTgsOSBAQCBjbGFzcyBBbmFseXNpc1Rh
c2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhICiAgICAgICAgICAgICAuYW5hbHlzaXMtdGFzay1zdGF0
dXMgewogICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgICAgICBkaXNwbGF5
OiBmbGV4OwotICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTsKKyAgICAgICAg
ICAgICAgICBwYWRkaW5nLWJvdHRvbTogMXJlbTsKKyAgICAgICAgICAgICAgICBtYXJnaW4tYm90
dG9tOiAxcmVtOworICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IHNvbGlkIDFweCAjY2Nj
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAuYW5hbHlzaXMtdGFzay1zdGF0dXMgPiBz
ZWN0aW9uIHsKQEAgLTY1MCw4ICs2NTUsMTIgQEAgY2xhc3MgQW5hbHlzaXNUYXNrUGFnZSBleHRl
bmRzIFBhZ2VXaXRoSAogICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IHNjcm9sbDsKICAgICAg
ICAgICAgIH0KIAorCiAgICAgICAgICAgICAuYW5hbHlzaXMtcmVzdWx0cy12aWV3IHsKLSAgICAg
ICAgICAgICAgICBtYXJnaW46IDIuNXJlbSAxcmVtOworICAgICAgICAgICAgICAgIGJvcmRlci10
b3A6IHNvbGlkIDFweCAjY2NjOworICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IHNvbGlk
IDFweCAjY2NjOworICAgICAgICAgICAgICAgIG1hcmdpbjogMXJlbSAwOworICAgICAgICAgICAg
ICAgIHBhZGRpbmc6IDFyZW07CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC50ZXN0LWNv
bmZpZ3VyYXRpb24gaDMgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271623</attachid>
            <date>2016-02-17 20:28:42 -0800</date>
            <delta_ts>2016-02-18 10:59:19 -0800</delta_ts>
            <desc>Updated change log</desc>
            <filename>bug-154379-20160217202825.patch</filename>
            <type>text/plain</type>
            <size>28858</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMTk2NzM5KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDc4IEBACisyMDE2LTAyLTE3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIHYzIFVJIHNob3VsZCBhbGxvdyBjdXN0b20gcmV2aXNpb25zIGZvciBBL0IgdGVz
dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0
Mzc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgdGhlIGNhcGFiaWxpdHkgdG8gY3VzdG9taXplIHJldmlzaW9ucyBzZWxlY3RlZCBpbiB0aGUg
b3ZlcnZpZXcgY2hhcnQgYW5kIHRoZSByZXN1bHRzIHZpZXdlci4KKworICAgICAgICBOZXdseSBh
ZGRlZCBDdXN0b21pemFibGVUZXN0R3JvdXBGb3JtIGlzIHJlc3BvbnNpYmxlIGZvciBhbGxvd2lu
ZyB1c2VycyB0byBtb2RpZnkgdGhlIHNldCBvZiByZXZpc2lvbnMgaW4KKyAgICAgICAgYSBuZXcg
QS9CIHRlc3RpbmcgZ3JvdXAuIFVubGlrZSBUZXN0R3JvdXBGb3JtIHdoaWNoIGRvZXNuJ3Qga25v
dyBhbnl0aGluZyBhYm91dCB3aGljaCByZXZpc2lvbnMgYXJlIHNlbGVjdGVkCisgICAgICAgIGZv
ciBlYWNoIHByb2plY3QvcmVwb3NpdG9yeSwgQ3VzdG9taXphYmxlVGVzdEdyb3VwRm9ybSBpcyBh
d2FyZSBvZiB0aGUgbGlzdCBvZiByZXZpc2lvbnMgdXNlZCBpbiBlYWNoIHNldC4KKworICAgICAg
ICBUaGUgbGlzdCBvZiByZXZpc2lvbnMgdXNlZCBpbiBlYWNoIHNldCBpcyByZXByZXNlbnRlZCBi
eSBSb290U2V0IGlmIHVzZXJzIGhhZCBub3QgY3VzdG9taXplZCB0aGVtLCBhbmQKKyAgICAgICAg
Q3VzdG9tUm9vdFNldCBvdGhlcndpc2U7IHRoZSBsYXR0ZXIgd2FzIGFkZGVkIHNpbmNlIHJlZ3Vs
YXIgUm9vdFNldCBvYmplY3QgcmVxdWlyZXMgQ29tbWl0TG9nIGFuZCBvdGhlcgorICAgICAgICBE
YXRhTW9kZWxPYmplY3RzIHdoaWNoIGFyZSBoYXJkIHRvIGNyZWF0ZSB3aXRob3V0IGNvcnJlc3Bv
bmRpbmcgZGF0YWJhc2UgZW50cmllcy4KKworICAgICAgICAqIHB1YmxpYy92My9jb21wb25lbnRz
L2N1c3RvbWl6YWJsZS10ZXN0LWdyb3VwLWZvcm0uanM6IEFkZGVkLgorICAgICAgICAoQ3VzdG9t
aXphYmxlVGVzdEdyb3VwRm9ybSk6IEFkZGVkLgorICAgICAgICAoQ3VzdG9taXphYmxlVGVzdEdy
b3VwRm9ybS5wcm90b3R5cGUuc2V0Um9vdFNldE1hcCk6IEFkZGVkLgorICAgICAgICAoQ3VzdG9t
aXphYmxlVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUuX3N1Ym1pdHRlZCk6IE92ZXJyaWRlcyB0aGUg
c3VwZXJjbGFzcycgbWV0aG9kLgorICAgICAgICAoQ3VzdG9taXphYmxlVGVzdEdyb3VwRm9ybS5w
cm90b3R5cGUuX2N1c3RvbWl6ZSk6IERpdHRvLiBVbmxpa2UgVGVzdEdyb3VwRm9ybSdzIGNhbGxi
YWNrLCB0aGlzIGNsYXNzJworICAgICAgICBjYWxsYmFjayBwYXNzZXMgaW4gYSByb290IHNldCBt
YXAgYXMgdGhlIHRoaXJkIGFyZ3VtZW50LgorICAgICAgICAoQ3VzdG9taXphYmxlVGVzdEdyb3Vw
Rm9ybS5wcm90b3R5cGUuX2NvbXB1dGVSb290U2V0TWFwKTogQWRkZWQuIFJldHVybnMgdGhpcy5f
cm9vdFNldE1hcCwgd2hpY2ggaXMgc2V0IGJ5CisgICAgICAgIEFuYWx5c2lzVGFza1BhZ2UgaWYg
dXNlciBoYWQgbm90IGN1c3RvbWl6ZWQgdGhlIHJvb3Qgc2V0cy4gT3RoZXJ3aXNlIHJldHVybiBh
IG5ldyBtYXAgd2l0aCBDdXN0b21Sb290U2V0J3MuCisgICAgICAgIChDdXN0b21pemFibGVUZXN0
R3JvdXBGb3JtLnByb3RvdHlwZS5yZW5kZXIpOiBBZGRlZC4gQ3JlYXRlcyBhIHRhYmxlIHRvIGFs
bG93IGN1c3RvbWl6YXRpb24gb2Ygcm9vdCBzZXRzLgorICAgICAgICAoQ3VzdG9taXphYmxlVGVz
dEdyb3VwRm9ybS5fY29uc3RydWN0UmV2aXNpb25SYWRpb0J1dHRvbnMpOiBBZGRlZC4KKyAgICAg
ICAgKEN1c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0uX2NyZWF0ZVJhZGlvQnV0dG9uKTogQWRkZWQu
CisgICAgICAgIChDdXN0b21pemFibGVUZXN0R3JvdXBGb3JtLmNzc1RlbXBsYXRlKTogQWRkZWQu
CisgICAgICAgIChDdXN0b21pemFibGVUZXN0R3JvdXBGb3JtLmZvcm1Db250ZW50KTogQWRkZWQu
IFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSBUZXN0R3JvdXBGb3JtLmh0bWxUZW1wbGF0ZS4KKyAg
ICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy90ZXN0LWdyb3VwLWZvcm0uanM6CisgICAgICAg
IChUZXN0R3JvdXBGb3JtKTogVXBkYXRlZCB0aGUgdmFyaW91cyBtZXRob2RzIHRvIG5vdCBkaXJl
Y3RseSBtdXRhdGUgRE9NLiBTdG9yZSB0aGUgc3RhdGUgaW4gaW5zdGFuY2UKKyAgICAgICAgdmFy
aWFibGVzIGFuZCB1cGRhdGUgRE9NIGluIHJlbmRlcigpIGFzIGRvbmUgZWxzZXdoZXJlLgorICAg
ICAgICAoVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUuc2V0TmVlZHNOYW1lKTogRGVsZXRlZC4gV2Ug
bm8gbG9uZ2VyIG5lZWQgdGhpcyBmbGFnIHNpbmNlIFRlc3RHcm91cEZvcm0gd2hpY2ggaXMKKyAg
ICAgICAgdXNlZCBmb3IgcmV0cmllcyBuZXZlciBuZWVkcyBhIG5hbWUgYW5kIEN1c3RvbWl6YWJs
ZVRlc3RHcm91cEZvcm0gd2hpY2ggaXMgdXNlZCB0byBjcmVhdGUgYSBuZXcgdGVzdCBncm91cAor
ICAgICAgICBhbHdheXMgcmVxdWlyZXMgYSBuYW1lLgorICAgICAgICAoVGVzdEdyb3VwRm9ybS5w
cm90b3R5cGUuc2V0RGlzYWJsZWQpOgorICAgICAgICAoVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUu
c2V0TGFiZWwpOgorICAgICAgICAoVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUuc2V0UmVwZXRpdGlv
bkNvdW50KToKKyAgICAgICAgKFRlc3RHcm91cEZvcm0ucHJvdG90eXBlLnJlbmRlcik6IEFkZGVk
LgorICAgICAgICAoVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUuX3N1Ym1pdHRlZCk6IE1vdmVkIHRo
ZSBjb2RlIHRvIHByZXZlbnQgdGhlIGRlZmF1bHQgYWN0aW9uIGhhcyBiZWVuIG1vdmVkIHRvIHRo
ZQorICAgICAgICBjb25zdHJ1Y3RvciBzaW5jZSB0aGlzIG1ldGhvZCBpcyBvdmVycmlkZGVuIGJ5
IEN1c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0uCisgICAgICAgIChUZXN0R3JvdXBGb3JtLmNzc1Rl
bXBsYXRlKTogQWRkZWQuCisgICAgICAgIChUZXN0R3JvdXBGb3JtLmh0bWxUZW1wbGF0ZSk6Cisg
ICAgICAgIChUZXN0R3JvdXBGb3JtLmZvcm1Db250ZW50KTogRXh0cmFjdGVkIGZyb20gaHRtbFRl
bXBsYXRlLgorICAgICAgICAqIHB1YmxpYy92My9pbmRleC5odG1sOgorICAgICAgICAqIHB1Ymxp
Yy92My9tb2RlbHMvcmVwb3NpdG9yeS5qczoKKyAgICAgICAgKFJlcG9zaXRvcnkuc29ydEJ5TmFt
ZVByZWZlcnJpbmdPbmVzV2l0aFVSTCk6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy92My9tb2Rl
bHMvcm9vdC1zZXQuanM6CisgICAgICAgIChSb290U2V0LnByb3RvdHlwZS5yZXZpc2lvbkZvclJl
cG9zaXRvcnkpOiBBZGRlZCBzbyB0aGF0IF9jcmVhdGVUZXN0R3JvdXBBZnRlclZlcmlmeWluZ1Jv
b3RTZXRMaXN0IGNhbiByZXRyaWV2ZQorICAgICAgICB0aGUgcmV2aXNpb24gaW5mb3JtYXRpb24g
ZnJvbSBDdXN0b21Sb290U2V0IHdpdGhvdXQgZ29pbmcgdGhyb3VnaCBDb21taXRMb2cgb2JqZWN0
cyBzaW5jZSBDdXN0b21Sb290U2V0IGRvZXNuJ3QKKyAgICAgICAgaGF2ZSBhc3NvY2lhdGVkIENv
bW1pdExvZyBvYmplY3RzLgorICAgICAgICAoQ3VzdG9tUm9vdFNldCk6IEFkZGVkLiBVc2VkIGJ5
IEN1c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0gdG8gY3JlYXRlIGEgY3VzdG9tIHJvb3QgbWFwIHNp
bmNlIHJlZ3VsYXIgUm9vdFNldAorICAgICAgICByZXF1aXJlcyBDb21taXRMb2cgYW5kIG90aGVy
IHJlbGF0ZWQgb2JqZWN0cyB3aGljaCBhcmUgaGFyZCB0byBjcmVhdGUgd2l0aG91dCBkYXRhYmFz
ZSBlbnRyaWVzLgorICAgICAgICAoQ3VzdG9tUm9vdFNldC5wcm90b3R5cGUuc2V0UmV2aXNpb25G
b3JSZXBvc2l0b3J5KTogQWRkZWQuCisgICAgICAgIChDdXN0b21Sb290U2V0LnByb3RvdHlwZS5y
ZXBvc2l0b3JpZXMpOiBBZGRlZC4KKyAgICAgICAgKEN1c3RvbVJvb3RTZXQucHJvdG90eXBlLnJl
dmlzaW9uRm9yUmVwb3NpdG9yeSk6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy92My9wYWdlcy9h
bmFseXNpcy10YXNrLXBhZ2UuanM6CisgICAgICAgIChBbmFseXNpc1Rhc2tQYWdlKToKKyAgICAg
ICAgKEFuYWx5c2lzVGFza1BhZ2UucHJvdG90eXBlLnJlbmRlcik6IFJlbW92ZWQgdGhlIHJlZmVy
ZW5jZSB0byB2MiBVSSBzaW5jZSB2MyBVSSBpcyBub3cgc3RyaWN0bHkgbW9yZSBwb3dlcmZ1bAor
ICAgICAgICB0aGFuIHYyIFVJLiBBbHNvIHVwZGF0ZSB0aGUgcm9vdCBzZXQgbWFwcyBpbiBlYWNo
IGZvcm0gaGVyZS4KKyAgICAgICAgKEFuYWx5c2lzVGFza1BhZ2UucHJvdG90eXBlLl9yZXRyeUN1
cnJlbnRUZXN0R3JvdXApOiBObyBsb25nZXIgdGFrZXMgdW51c2VkIG5hbWUgYXJndW1lbnQgYXMg
aXQgZ290IHJlbW92ZWQKKyAgICAgICAgZnJvbSBUZXN0R3JvdXBGb3JtLgorICAgICAgICAoQW5h
bHlzaXNUYXNrUGFnZS5wcm90b3R5cGUuX2NoYXJ0U2VsZWN0aW9uRGlkQ2hhbmdlKTogTm8gbG9u
Z2VyIHVwZGF0ZXMgdGhlIGRpc2FibGVkLW5lc3MgaGVyZSBzaW5jZSBpdCdzIG5vdworICAgICAg
ICBkb25lIGluIHJlbmRlcigpIHZpYSBzZXRSb290U2V0TWFwKCkuCisgICAgICAgIChBbmFseXNp
c1Rhc2tQYWdlLnByb3RvdHlwZS5fY3JlYXRlTmV3VGVzdEdyb3VwRnJvbUNoYXJ0KTogTm93IHRh
a2VzIHJvb3RTZXRNYXAgYXMgYW4gYXJndW1lbnQuCisgICAgICAgIChBbmFseXNpc1Rhc2tQYWdl
LnByb3RvdHlwZS5fc2VsZWN0ZWRSb3dJbkFuYWx5c2lzUmVzdWx0c1ZpZXdlcik6IE5vIGxvbmdl
ciB1cGRhdGVzIHRoZSBkaXNhYmxlZC1uZXNzIGhlcmUKKyAgICAgICAgc2luY2UgaXQncyBub3cg
ZG9uZSBpbiByZW5kZXIoKSB2aWEgc2V0Um9vdFNldE1hcCgpLgorICAgICAgICAoQW5hbHlzaXNU
YXNrUGFnZS5wcm90b3R5cGUuX2NyZWF0ZU5ld1Rlc3RHcm91cEZyb21WaWV3ZXIpOiBOb3cgdGFr
ZXMgcm9vdFNldE1hcCBhcyBhbiBhcmd1bWVudC4KKyAgICAgICAgKEFuYWx5c2lzVGFza1BhZ2Uu
cHJvdG90eXBlLl9jcmVhdGVUZXN0R3JvdXBBZnRlclZlcmlmeWluZ1Jvb3RTZXRMaXN0KTogVGFr
ZSBhIGRpY3Rpb25hcnkgb2Ygcm9vdCBzZXQgbGFiZWxzCisgICAgICAgIHN1Y2ggYXMgQSBhbmQg
Qiwgd2hpY2ggbWFwcyB0byBhIFJvb3RTZXQgb3IgYSBuZXdseS1hZGRlZCBDdXN0b21Sb290U2V0
LgorICAgICAgICAoQW5hbHlzaXNUYXNrUGFnZS5odG1sVGVtcGxhdGUpOiBVc2UgY3VzdG9taXph
YmxlLXRlc3QtZ3JvdXAtZm9ybSBmb3IgY3JlYXRpbmcgYSBuZXcgQS9CIHRlc3RpbmcgZ3JvdXAu
IFJldHJ5CisgICAgICAgIGZvcm0gd2lsbCBjb250aW51ZSB0byB1c2UgVGVzdEdyb3VwRm9ybSBz
aW5jZSBjdXN0b21pemluZyByZXZpc2lvbnMgaXMgbm9uLXNlbnNpY2FsIGluIHJldHJpZXMuCisg
ICAgICAgIChBbmFseXNpc1Rhc2tQYWdlLmNzc1RlbXBsYXRlKTogVXBkYXRlZCB0aGUgc3R5bGUu
CisKIDIwMTYtMDItMTYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgdjMgVUkgaGFzIHRoZSBjYXBhYmlsaXR5IHRvIHNjaGVkdWxlIGFuIEEvQiB0ZXN0aW5nIGlu
IGEgc3BlY2lmaWMgcmFuZ2UKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djMvaW5kZXguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL3YzL2luZGV4Lmh0bWwJKHJldmlzaW9uIDE5NjcxMCkKKysrIFdlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvdjMvaW5kZXguaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYs
NyBAQCBSdW4gdG9vbHMvYnVuZGxlLXYzLXNjcmlwdHMgdG8gc3BlZWQgdXAgCiAgICAgICAgIDxz
Y3JpcHQgc3JjPSJjb21wb25lbnRzL2FuYWx5c2lzLXJlc3VsdHMtdmlld2VyLmpzIj48L3Njcmlw
dD4KICAgICAgICAgPHNjcmlwdCBzcmM9ImNvbXBvbmVudHMvdGVzdC1ncm91cC1yZXN1bHRzLXRh
YmxlLmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdCBzcmM9ImNvbXBvbmVudHMvdGVzdC1n
cm91cC1mb3JtLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9ImNvbXBvbmVudHMv
Y3VzdG9taXphYmxlLXRlc3QtZ3JvdXAtZm9ybS5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3Jp
cHQgc3JjPSJjb21wb25lbnRzL2NoYXJ0LXN0eWxlcy5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxz
Y3JpcHQgc3JjPSJjb21wb25lbnRzL2NoYXJ0LXBhbmUtYmFzZS5qcyI+PC9zY3JpcHQ+CiAgICAg
ICAgIDxzY3JpcHQgc3JjPSJwYWdlcy9wYWdlLmpzIj48L3NjcmlwdD4KSW5kZXg6IFdlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b21pemFibGUtdGVzdC1n
cm91cC1mb3JtLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvY29tcG9uZW50cy9jdXN0b21pemFibGUtdGVzdC1ncm91cC1mb3JtLmpzCShyZXZpc2lv
biAwKQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2N1
c3RvbWl6YWJsZS10ZXN0LWdyb3VwLWZvcm0uanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
NzQgQEAKKworY2xhc3MgQ3VzdG9taXphYmxlVGVzdEdyb3VwRm9ybSBleHRlbmRzIFRlc3RHcm91
cEZvcm0geworCisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoJ2N1c3Rv
bWl6YWJsZS10ZXN0LWdyb3VwLWZvcm0nKTsKKyAgICAgICAgdGhpcy5fcm9vdFNldE1hcCA9IG51
bGw7CisgICAgICAgIHRoaXMuX2Rpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fcmVuZGVy
ZWRSZXBvc2l0b3J5bGlzdCA9IG51bGw7CisgICAgICAgIHRoaXMuX2N1c3RvbWl6ZWQgPSBmYWxz
ZTsKKyAgICAgICAgdGhpcy5jb250ZW50KCkucXVlcnlTZWxlY3RvcignYScpLm9uY2xpY2sgPSB0
aGlzLl9jdXN0b21pemUuYmluZCh0aGlzKTsKKyAgICB9CisKKyAgICBzZXRSb290U2V0TWFwKG1h
cCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Jvb3RTZXRNYXAgPSBtYXA7CisgICAgICAgIHRoaXMu
X2N1c3RvbWl6ZWQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5zZXREaXNhYmxlZCghbWFwKTsKKyAg
ICB9CisKKyAgICBfc3VibWl0dGVkKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9zdGFydENh
bGxiYWNrKQorICAgICAgICAgICAgdGhpcy5fc3RhcnRDYWxsYmFjayh0aGlzLmNvbnRlbnQoKS5x
dWVyeVNlbGVjdG9yKCcubmFtZScpLnZhbHVlLCB0aGlzLl9yZXBldGl0aW9uQ291bnQsIHRoaXMu
X2NvbXB1dGVSb290U2V0TWFwKCkpOworICAgIH0KKworICAgIF9jdXN0b21pemUoZXZlbnQpCisg
ICAgeworICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICB0aGlzLl9jdXN0
b21pemVkID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5yZW5kZXIoKTsKKyAgICB9CisKKyAgICBfY29t
cHV0ZVJvb3RTZXRNYXAoKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcm9v
dFNldE1hcCk7CisgICAgICAgIGlmICghdGhpcy5fY3VzdG9taXplZCkKKyAgICAgICAgICAgIHJl
dHVybiB0aGlzLl9yb290U2V0TWFwOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Jl
bmRlcmVkUmVwb3NpdG9yeWxpc3QpOworICAgICAgICB2YXIgbWFwID0ge307CisgICAgICAgIGZv
ciAodmFyIGxhYmVsIGluIHRoaXMuX3Jvb3RTZXRNYXApIHsKKyAgICAgICAgICAgIHZhciBjdXN0
b21Sb290U2V0ID0gbmV3IEN1c3RvbVJvb3RTZXQ7CisgICAgICAgICAgICBmb3IgKHZhciByZXBv
c2l0b3J5IG9mIHRoaXMuX3JlbmRlcmVkUmVwb3NpdG9yeWxpc3QpIHsKKyAgICAgICAgICAgICAg
ICB2YXIgaWQgPSBDdXN0b21pemFibGVUZXN0R3JvdXBGb3JtLl9pZEZvckxhYmVsQW5kUmVwb3Np
dG9yeShsYWJlbCwgcmVwb3NpdG9yeSk7CisgICAgICAgICAgICAgICAgdmFyIHJldmlzaW9uID0g
dGhpcy5jb250ZW50KCkuZ2V0RWxlbWVudEJ5SWQoaWQpLnZhbHVlOworICAgICAgICAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHJldmlzaW9uKTsKKyAgICAgICAgICAgICAgICBpZiAocmV2aXNpb24p
CisgICAgICAgICAgICAgICAgICAgIGN1c3RvbVJvb3RTZXQuc2V0UmV2aXNpb25Gb3JSZXBvc2l0
b3J5KHJlcG9zaXRvcnksIHJldmlzaW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1h
cFtsYWJlbF0gPSBjdXN0b21Sb290U2V0OworICAgICAgICB9CisgICAgICAgIHJldHVybiBtYXA7
CisgICAgfQorCisgICAgcmVuZGVyKCkKKyAgICB7CisgICAgICAgIHN1cGVyLnJlbmRlcigpOwor
ICAgICAgICB0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcuY3VzdG9taXplLWxpbmsnKS5z
dHlsZS5kaXNwbGF5ID0gdGhpcy5fZGlzYWJsZWQgPyAnbm9uZScgOiBudWxsOworCisgICAgICAg
IGlmICghdGhpcy5fY3VzdG9taXplZCkgeworICAgICAgICAgICAgdGhpcy5yZW5kZXJSZXBsYWNl
KHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5jdXN0b20tdGFibGUtY29udGFpbmVyJyks
IFtdKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB2YXIgbWFwID0g
dGhpcy5fcm9vdFNldE1hcDsKKyAgICAgICAgY29uc29sZS5hc3NlcnQobWFwKTsKKworICAgICAg
ICB2YXIgcmVwb3NpdG9yeVNldCA9IG5ldyBTZXQ7CisgICAgICAgIHZhciByb290U2V0TGFiZWxz
ID0gW107CisgICAgICAgIGZvciAodmFyIGxhYmVsIGluIG1hcCkgeworICAgICAgICAgICAgZm9y
ICh2YXIgcmVwb3NpdG9yeSBvZiBtYXBbbGFiZWxdLnJlcG9zaXRvcmllcygpKQorICAgICAgICAg
ICAgICAgIHJlcG9zaXRvcnlTZXQuYWRkKHJlcG9zaXRvcnkpOworICAgICAgICAgICAgcm9vdFNl
dExhYmVscy5wdXNoKGxhYmVsKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3JlbmRlcmVk
UmVwb3NpdG9yeWxpc3QgPSBSZXBvc2l0b3J5LnNvcnRCeU5hbWVQcmVmZXJyaW5nT25lc1dpdGhV
UkwoQXJyYXkuZnJvbShyZXBvc2l0b3J5U2V0LnZhbHVlcygpKSk7CisKKyAgICAgICAgdmFyIGVs
ZW1lbnQgPSBDb21wb25lbnRCYXNlLmNyZWF0ZUVsZW1lbnQ7CisgICAgICAgIHRoaXMucmVuZGVy
UmVwbGFjZSh0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcuY3VzdG9tLXRhYmxlLWNvbnRh
aW5lcicpLAorICAgICAgICAgICAgZWxlbWVudCgndGFibGUnLCB7Y2xhc3M6ICdjdXN0b20tdGFi
bGUnfSwgWworICAgICAgICAgICAgICAgIGVsZW1lbnQoJ3RoZWFkJywKKyAgICAgICAgICAgICAg
ICAgICAgZWxlbWVudCgndHInLAorICAgICAgICAgICAgICAgICAgICAgICAgW2VsZW1lbnQoJ3Rk
JywgJ1JlcG9zaXRvcnknKSwgcm9vdFNldExhYmVscy5tYXAoZnVuY3Rpb24gKGxhYmVsKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQoJ3RkJywge2NvbHNwYW46
IHJvb3RTZXRMYWJlbHMubGVuZ3RoICsgMX0sIGxhYmVsKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0pXSkpLAorICAgICAgICAgICAgICAgIGVsZW1lbnQoJ3Rib2R5JywKKyAgICAgICAgICAg
ICAgICAgICAgdGhpcy5fcmVuZGVyZWRSZXBvc2l0b3J5bGlzdC5tYXAoZnVuY3Rpb24gKHJlcG9z
aXRvcnkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjZWxscyA9IFtlbGVtZW50KCd0
aCcsIHJlcG9zaXRvcnkubGFiZWwoKSldOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2
YXIgbGFiZWwgaW4gbWFwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxzLnB1c2go
Q3VzdG9taXphYmxlVGVzdEdyb3VwRm9ybS5fY29uc3RydWN0UmV2aXNpb25SYWRpb0J1dHRvbnMo
bWFwLCByZXBvc2l0b3J5LCBsYWJlbCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGVsZW1lbnQoJ3RyJywgY2VsbHMpOworICAgICAgICAgICAgICAgICAgICB9KSldKSk7CisgICAg
fQorCisgICAgc3RhdGljIF9pZEZvckxhYmVsQW5kUmVwb3NpdG9yeShsYWJlbCwgcmVwb3NpdG9y
eSkgeyByZXR1cm4gbGFiZWwgKyAnLScgKyByZXBvc2l0b3J5LmlkKCk7IH0KKworICAgIHN0YXRp
YyBfY29uc3RydWN0UmV2aXNpb25SYWRpb0J1dHRvbnMocm9vdFNldE1hcCwgcmVwb3NpdG9yeSwg
cm93TGFiZWwpCisgICAgeworICAgICAgICB2YXIgaWQgPSB0aGlzLl9pZEZvckxhYmVsQW5kUmVw
b3NpdG9yeShyb3dMYWJlbCwgcmVwb3NpdG9yeSk7CisgICAgICAgIHZhciBncm91cE5hbWUgPSBp
ZCArICctZ3JvdXAnOworICAgICAgICB2YXIgZWxlbWVudCA9IENvbXBvbmVudEJhc2UuY3JlYXRl
RWxlbWVudDsKKyAgICAgICAgdmFyIHJldmlzaW9uRWRpdG9yID0gZWxlbWVudCgnaW5wdXQnLCB7
aWQ6IGlkfSk7CisKKyAgICAgICAgdmFyIG5vZGVzID0gW107CisgICAgICAgIGZvciAodmFyIGxh
YmVsVG9DaG9vc2UgaW4gcm9vdFNldE1hcCkgeworICAgICAgICAgICAgdmFyIGNvbW1pdCA9IHJv
b3RTZXRNYXBbbGFiZWxUb0Nob29zZV0uY29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KTsK
KyAgICAgICAgICAgIHZhciBjaGVja2VkID0gbGFiZWxUb0Nob29zZSA9PSByb3dMYWJlbDsKKyAg
ICAgICAgICAgIHZhciByYWRpb0J1dHRvbiA9IHRoaXMuX2NyZWF0ZVJhZGlvQnV0dG9uKGdyb3Vw
TmFtZSwgcmV2aXNpb25FZGl0b3IsIGNvbW1pdCwgY2hlY2tlZCk7CisgICAgICAgICAgICBpZiAo
Y2hlY2tlZCkKKyAgICAgICAgICAgICAgICByZXZpc2lvbkVkaXRvci52YWx1ZSA9IGNvbW1pdCA/
IGNvbW1pdC5yZXZpc2lvbigpIDogJyc7CisgICAgICAgICAgICBub2Rlcy5wdXNoKGVsZW1lbnQo
J3RkJywgZWxlbWVudCgnbGFiZWwnLCBbcmFkaW9CdXR0b24sIGxhYmVsVG9DaG9vc2VdKSkpOwor
ICAgICAgICB9CisgICAgICAgIG5vZGVzLnB1c2goZWxlbWVudCgndGQnLCByZXZpc2lvbkVkaXRv
cikpOworCisgICAgICAgIHJldHVybiBub2RlczsKKyAgICB9CisKKyAgICBzdGF0aWMgX2NyZWF0
ZVJhZGlvQnV0dG9uKGdyb3VwTmFtZSwgcmV2aXNpb25FZGl0b3IsIGNvbW1pdCwgY2hlY2tlZCkK
KyAgICB7CisgICAgICAgIHZhciBidXR0b24gPSBDb21wb25lbnRCYXNlLmNyZWF0ZUVsZW1lbnQo
J2lucHV0JywgeworICAgICAgICAgICAgdHlwZTogJ3JhZGlvJywKKyAgICAgICAgICAgIG5hbWU6
IGdyb3VwTmFtZSArICctcmFkaW8nLAorICAgICAgICAgICAgb25jaGFuZ2U6IGZ1bmN0aW9uICgp
IHsgcmV2aXNpb25FZGl0b3IudmFsdWUgPSBjb21taXQgPyBjb21taXQucmV2aXNpb24oKSA6ICcn
OyB9LAorICAgICAgICB9KTsKKyAgICAgICAgaWYgKGNoZWNrZWQpIC8vIEZJWE1FOiBjcmVhdGVF
bGVtZW50IHNob3VsZCBiZSBhYmxlIHRvIHNldCBib29sZWFuIGF0dHJpYnV0ZSBwcm9wZXJseS4K
KyAgICAgICAgICAgIGJ1dHRvbi5jaGVja2VkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGJ1dHRv
bjsKKyAgICB9CisKKyAgICBzdGF0aWMgY3NzVGVtcGxhdGUoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHN1cGVyLmNzc1RlbXBsYXRlKCkgKyBgCisgICAgICAgICAgICAuY3VzdG9taXplLWxpbmsg
eworICAgICAgICAgICAgICAgIGNvbG9yOiAjMzMzOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAuY3VzdG9taXplLWxpbmsgYSB7CisgICAgICAgICAgICAgICAgY29sb3I6IGluaGVyaXQ7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC5jdXN0b20tdGFibGUgeworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMXJlbSAwOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAuY3Vz
dG9tLXRhYmxlLAorICAgICAgICAgICAgLmN1c3RvbS10YWJsZSB0ZCwKKyAgICAgICAgICAgIC5j
dXN0b20tdGFibGUgdGggeworICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0Owor
ICAgICAgICAgICAgICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7CisgICAgICAgICAgICAg
ICAgYm9yZGVyLXRvcDogc29saWQgMXB4ICNkZGQ7CisgICAgICAgICAgICAgICAgYm9yZGVyLWJv
dHRvbTogc29saWQgMXB4ICNkZGQ7CisgICAgICAgICAgICAgICAgcGFkZGluZzogMC40cmVtIDAu
MnJlbTsKKyAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLmN1c3RvbS10YWJsZSB0aGVhZCB0ZCwKKyAgICAgICAgICAgIC5jdXN0
b20tdGFibGUgdGggeworICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGA7CisgICAgfQorCisgICAgc3RhdGljIGZvcm1Db250ZW50
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBgCisgICAgICAgICAgICA8aW5wdXQgY2xhc3M9Im5h
bWUiIHR5cGU9InRleHQiIHBsYWNlaG9sZGVyPSJUZXN0IGdyb3VwIG5hbWUiPgorICAgICAgICAg
ICAgJHtzdXBlci5mb3JtQ29udGVudCgpfQorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImN1c3Rv
bWl6ZS1saW5rIj4oPGEgaHJlZj0iIj5DdXN0b21pemU8L2E+KTwvc3Bhbj4KKyAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImN1c3RvbS10YWJsZS1jb250YWluZXIiPjwvZGl2PgorICAgICAgICBgOwor
ICAgIH0KK30KKworQ29tcG9uZW50QmFzZS5kZWZpbmVFbGVtZW50KCdjdXN0b21pemFibGUtdGVz
dC1ncm91cC1mb3JtJywgQ3VzdG9taXphYmxlVGVzdEdyb3VwRm9ybSk7CkluZGV4OiBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvdGVzdC1ncm91cC1mb3JtLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9u
ZW50cy90ZXN0LWdyb3VwLWZvcm0uanMJKHJldmlzaW9uIDE5NjcxMCkKKysrIFdlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy90ZXN0LWdyb3VwLWZvcm0uanMJKHdv
cmtpbmcgY29weSkKQEAgLTEsNTIgKzEsNzAgQEAKIAogY2xhc3MgVGVzdEdyb3VwRm9ybSBleHRl
bmRzIENvbXBvbmVudEJhc2UgewogCi0gICAgY29uc3RydWN0b3IoKQorICAgIGNvbnN0cnVjdG9y
KG5hbWUpCiAgICAgewotICAgICAgICBzdXBlcigndGVzdC1ncm91cC1mb3JtJyk7CisgICAgICAg
IHN1cGVyKG5hbWUgfHwgJ3Rlc3QtZ3JvdXAtZm9ybScpOwogICAgICAgICB0aGlzLl9zdGFydENh
bGxiYWNrID0gbnVsbDsKLSAgICAgICAgdGhpcy5fcmVwZXRpdGlvbkNvdW50Q29udHJvbCA9IHRo
aXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5yZXBldGl0aW9uLWNvdW50Jyk7Ci0gICAgICAg
IHRoaXMuX3JlcGV0aXRpb25Db3VudENvbnRyb2wudmFsdWUgPSA0OwotICAgICAgICB0aGlzLl9i
dXR0b25Db250cm9sID0gdGhpcy5jb250ZW50KCkucXVlcnlTZWxlY3RvcignYnV0dG9uJyk7Cisg
ICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2xhYmVsID0gdW5k
ZWZpbmVkOworICAgICAgICB0aGlzLl9yZXBldGl0aW9uQ291bnQgPSA0OworCiAgICAgICAgIHRo
aXMuX25hbWVDb250cm9sID0gdGhpcy5jb250ZW50KCkucXVlcnlTZWxlY3RvcignLm5hbWUnKTsK
LSAgICAgICAgdGhpcy5jb250ZW50KCkucXVlcnlTZWxlY3RvcignZm9ybScpLm9uc3VibWl0ID0g
dGhpcy5fc3VibWl0dGVkLmJpbmQodGhpcyk7CisgICAgICAgIHRoaXMuX3JlcGV0aXRpb25Db3Vu
dENvbnRyb2wgPSB0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcucmVwZXRpdGlvbi1jb3Vu
dCcpOworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIHRoaXMuX3JlcGV0aXRpb25D
b3VudENvbnRyb2wub25jaGFuZ2UgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBzZWxmLl9y
ZXBldGl0aW9uQ291bnQgPSBzZWxmLl9yZXBldGl0aW9uQ291bnRDb250cm9sLnZhbHVlOworICAg
ICAgICB9CisKKyAgICAgICAgdmFyIGJvdW5kU3VibWl0dGVkID0gdGhpcy5fc3VibWl0dGVkLmJp
bmQodGhpcyk7CisgICAgICAgIHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2Zvcm0nKS5v
bnN1Ym1pdCA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICAgICAgZXZlbnQucHJldmVudERl
ZmF1bHQoKTsKKyAgICAgICAgICAgIGJvdW5kU3VibWl0dGVkKCk7CisgICAgICAgIH0KICAgICB9
CiAKICAgICBzZXRTdGFydENhbGxiYWNrKGNhbGxiYWNrKSB7IHRoaXMuX3N0YXJ0Q2FsbGJhY2sg
PSBjYWxsYmFjazsgfQotICAgIHNldE5lZWRzTmFtZShuZWVkc05hbWUpIHsgdGhpcy5fbmFtZUNv
bnRyb2wuc3R5bGUuZGlzcGxheSA9IG5lZWRzTmFtZSA/IG51bGwgOiAnbm9uZSc7IH0KLSAgICBz
ZXREaXNhYmxlZChkaXNhYmxlZCkgeyB0aGlzLl9idXR0b25Db250cm9sLmRpc2FibGVkID0gZGlz
YWJsZWQ7IH0KKyAgICBzZXREaXNhYmxlZChkaXNhYmxlZCkgeyB0aGlzLl9kaXNhYmxlZCA9ICEh
ZGlzYWJsZWQ7IH0KKyAgICBzZXRMYWJlbChsYWJlbCkgeyB0aGlzLl9sYWJlbCA9IGxhYmVsOyB9
CisgICAgc2V0UmVwZXRpdGlvbkNvdW50KGNvdW50KSB7IHRoaXMuX3JlcGV0aXRpb25Db3VudCA9
IGNvdW50OyB9CiAKLSAgICBzZXRMYWJlbChsYWJlbCkgeyB0aGlzLl9idXR0b25Db250cm9sLnRl
eHRDb250ZW50ID0gbGFiZWw7IH0KLSAgICBzZXRSZXBldGl0aW9uQ291bnQoY291bnQpIHsgdGhp
cy5fcmVwZXRpdGlvbkNvdW50Q29udHJvbC52YWx1ZSA9IGNvdW50OyB9CisgICAgcmVuZGVyKCkK
KyAgICB7CisgICAgICAgIHZhciBidXR0b24gPSB0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9y
KCdidXR0b24nKTsKKyAgICAgICAgaWYgKHRoaXMuX2xhYmVsKQorICAgICAgICAgICAgYnV0dG9u
LnRleHRDb250ZW50ID0gdGhpcy5fbGFiZWw7CisgICAgICAgIGJ1dHRvbi5kaXNhYmxlZCA9IHRo
aXMuX2Rpc2FibGVkOworICAgICAgICB0aGlzLl9yZXBldGl0aW9uQ291bnRDb250cm9sLnZhbHVl
ID0gdGhpcy5fcmVwZXRpdGlvbkNvdW50OworICAgIH0KIAotICAgIF9zdWJtaXR0ZWQoZXZlbnQp
CisgICAgX3N1Ym1pdHRlZCgpCiAgICAgewotICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgp
OwogICAgICAgICBpZiAodGhpcy5fc3RhcnRDYWxsYmFjaykKLSAgICAgICAgICAgIHRoaXMuX3N0
YXJ0Q2FsbGJhY2sodGhpcy5fbmFtZUNvbnRyb2wudmFsdWUsIHRoaXMuX3JlcGV0aXRpb25Db3Vu
dENvbnRyb2wudmFsdWUpOworICAgICAgICAgICAgdGhpcy5fc3RhcnRDYWxsYmFjayh0aGlzLl9y
ZXBldGl0aW9uQ291bnQpOwogICAgIH0KIAogICAgIHN0YXRpYyBodG1sVGVtcGxhdGUoKQogICAg
IHsKKyAgICAgICAgcmV0dXJuIGA8Zm9ybT48YnV0dG9uIHR5cGU9InN1Ym1pdCI+U3RhcnQgQS9C
IHRlc3Rpbmc8L2J1dHRvbj4ke3RoaXMuZm9ybUNvbnRlbnQoKX08L2Zvcm0+YDsKKyAgICB9CisK
KyAgICBzdGF0aWMgZm9ybUNvbnRlbnQoKQorICAgIHsKICAgICAgICAgcmV0dXJuIGAKLSAgICAg
ICAgICAgIDxmb3JtPgotICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0Ij5TdGFy
dCBBL0IgdGVzdGluZzwvYnV0dG9uPgotICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0ibmFt
ZSIgdHlwZT0idGV4dCI+Ci0gICAgICAgICAgICAgICAgd2l0aAotICAgICAgICAgICAgICAgIDxz
ZWxlY3QgY2xhc3M9InJlcGV0aXRpb24tY291bnQiPgotICAgICAgICAgICAgICAgICAgICA8b3B0
aW9uPjE8L29wdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj4yPC9vcHRpb24+Ci0g
ICAgICAgICAgICAgICAgICAgIDxvcHRpb24+Mzwvb3B0aW9uPgotICAgICAgICAgICAgICAgICAg
ICA8b3B0aW9uPjQ8L29wdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj41PC9vcHRp
b24+Ci0gICAgICAgICAgICAgICAgICAgIDxvcHRpb24+Njwvb3B0aW9uPgotICAgICAgICAgICAg
ICAgICAgICA8b3B0aW9uPjc8L29wdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj44
PC9vcHRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxvcHRpb24+OTwvb3B0aW9uPgotICAgICAg
ICAgICAgICAgICAgICA8b3B0aW9uPjEwPC9vcHRpb24+Ci0gICAgICAgICAgICAgICAgPC9zZWxl
Y3Q+Ci0gICAgICAgICAgICAgICAgaXRlcmF0aW9ucyBwZXIgc2V0Ci0gICAgICAgICAgICA8L2Zv
cm0+CisgICAgICAgICAgICB3aXRoCisgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPSJyZXBldGl0
aW9uLWNvdW50Ij4KKyAgICAgICAgICAgICAgICA8b3B0aW9uPjE8L29wdGlvbj4KKyAgICAgICAg
ICAgICAgICA8b3B0aW9uPjI8L29wdGlvbj4KKyAgICAgICAgICAgICAgICA8b3B0aW9uPjM8L29w
dGlvbj4KKyAgICAgICAgICAgICAgICA8b3B0aW9uPjQ8L29wdGlvbj4KKyAgICAgICAgICAgICAg
ICA8b3B0aW9uPjU8L29wdGlvbj4KKyAgICAgICAgICAgICAgICA8b3B0aW9uPjY8L29wdGlvbj4K
KyAgICAgICAgICAgICAgICA8b3B0aW9uPjc8L29wdGlvbj4KKyAgICAgICAgICAgICAgICA8b3B0
aW9uPjg8L29wdGlvbj4KKyAgICAgICAgICAgICAgICA8b3B0aW9uPjk8L29wdGlvbj4KKyAgICAg
ICAgICAgICAgICA8b3B0aW9uPjEwPC9vcHRpb24+CisgICAgICAgICAgICA8L3NlbGVjdD4KKyAg
ICAgICAgICAgIGl0ZXJhdGlvbnMgcGVyIHNldAogICAgICAgICBgOwogICAgIH0KIApJbmRleDog
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvcmVwb3NpdG9yeS5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9y
ZXBvc2l0b3J5LmpzCShyZXZpc2lvbiAxOTY3MTApCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL21vZGVscy9yZXBvc2l0b3J5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw0
ICsxOSwyMCBAQCBjbGFzcyBSZXBvc2l0b3J5IGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAg
ewogICAgICAgICByZXR1cm4gKHRoaXMuX2JsYW1lVXJsIHx8ICcnKS5yZXBsYWNlKC9cJDEvZywg
ZnJvbSkucmVwbGFjZSgvXCQyL2csIHRvKTsKICAgICB9CisKKyAgICBzdGF0aWMgc29ydEJ5TmFt
ZVByZWZlcnJpbmdPbmVzV2l0aFVSTChyZXBvc2l0b3JpZXMpCisgICAgeworICAgICAgICByZXR1
cm4gcmVwb3NpdG9yaWVzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsKKyAgICAgICAgICAgIGlmICgh
IWEuX2JsYW1lVXJsID09ICEhYi5fYmxhbWVVcmwpIHsKKyAgICAgICAgICAgICAgICBpZiAoYS5u
YW1lKCkgPiBiLm5hbWUoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAg
ICAgICAgICAgZWxzZSBpZiAoYS5uYW1lKCkgPCBiLm5hbWUoKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfSBl
bHNlIGlmIChiLl9ibGFtZVVybCkgLy8gYSA+IGIKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsK
KyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfSk7CisgICAgfQorCiB9CkluZGV4OiBX
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9yb290LXNldC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9yb290
LXNldC5qcwkocmV2aXNpb24gMTk2NzEwKQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9tb2RlbHMvcm9vdC1zZXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDEy
IEBAIGNsYXNzIFJvb3RTZXQgZXh0ZW5kcyBEYXRhTW9kZWxPYmplY3QgewogICAgIHJlcG9zaXRv
cmllcygpIHsgcmV0dXJuIHRoaXMuX3JlcG9zaXRvcmllczsgfQogICAgIGNvbW1pdEZvclJlcG9z
aXRvcnkocmVwb3NpdG9yeSkgeyByZXR1cm4gdGhpcy5fcmVwb3NpdG9yeVRvQ29tbWl0TWFwW3Jl
cG9zaXRvcnkuaWQoKV07IH0KIAorICAgIHJldmlzaW9uRm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5
KQorICAgIHsKKyAgICAgICAgdmFyIGNvbW1pdCA9IHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1h
cFtyZXBvc2l0b3J5LmlkKCldOworICAgICAgICByZXR1cm4gY29tbWl0ID8gY29tbWl0LnJldmlz
aW9uKCkgOiBudWxsOworICAgIH0KKwogICAgIGxhdGVzdENvbW1pdFRpbWUoKQogICAgIHsKICAg
ICAgICAgaWYgKHRoaXMuX2xhdGVzdENvbW1pdFRpbWUgPT0gbnVsbCkgewpAQCAtODEsMyArODcs
MjIgQEAgY2xhc3MgTWVhc3VyZW1lbnRSb290U2V0IGV4dGVuZHMgUm9vdFNldAogICAgICAgICBy
ZXR1cm4gUm9vdFNldC5maW5kQnlJZChyb290U2V0SWQpIHx8IChuZXcgTWVhc3VyZW1lbnRSb290
U2V0KHJvb3RTZXRJZCwgcmV2aXNpb25MaXN0KSk7CiAgICAgfQogfQorCitjbGFzcyBDdXN0b21S
b290U2V0IHsKKworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Jldmlz
aW9uTGlzdEJ5UmVwb3NpdG9yeSA9IG5ldyBNYXA7CisgICAgfQorCisgICAgc2V0UmV2aXNpb25G
b3JSZXBvc2l0b3J5KHJlcG9zaXRvcnksIHJldmlzaW9uKQorICAgIHsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQocmVwb3NpdG9yeSBpbnN0YW5jZW9mIFJlcG9zaXRvcnkpOworICAgICAgICB0aGlz
Ll9yZXZpc2lvbkxpc3RCeVJlcG9zaXRvcnkuc2V0KHJlcG9zaXRvcnksIHJldmlzaW9uKTsKKyAg
ICB9CisKKyAgICByZXBvc2l0b3JpZXMoKSB7IHJldHVybiBBcnJheS5mcm9tKHRoaXMuX3Jldmlz
aW9uTGlzdEJ5UmVwb3NpdG9yeS5rZXlzKCkpOyB9CisgICAgcmV2aXNpb25Gb3JSZXBvc2l0b3J5
KHJlcG9zaXRvcnkpIHsgcmV0dXJuIHRoaXMuX3JldmlzaW9uTGlzdEJ5UmVwb3NpdG9yeS5nZXQo
cmVwb3NpdG9yeSk7IH0KKworfQorCkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL3YzL3BhZ2VzL2FuYWx5c2lzLXRhc2stcGFnZS5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2FuYWx5c2lzLXRhc2stcGFnZS5qcwko
cmV2aXNpb24gMTk2NzEwKQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9w
YWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanMJKHdvcmtpbmcgY29weSkKQEAgLTYzLDE2ICs2Mywx
NCBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhICiAgICAgICAgIHRo
aXMuX2J1Z1RyYWNrZXJDb250cm9sID0gdGhpcy5jb250ZW50KCkucXVlcnlTZWxlY3RvcignLmJ1
Zy10cmFja2VyLWNvbnRyb2wnKTsKICAgICAgICAgdGhpcy5fYnVnTnVtYmVyQ29udHJvbCA9IHRo
aXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5idWctbnVtYmVyLWNvbnRyb2wnKTsKIAotICAg
ICAgICB0aGlzLl9uZXdUZXN0R3JvdXBGb3JtRm9yQ2hhcnQgPSB0aGlzLmNvbnRlbnQoKS5xdWVy
eVNlbGVjdG9yKCcub3ZlcnZpZXctY2hhcnQgdGVzdC1ncm91cC1mb3JtJykuY29tcG9uZW50KCk7
CisgICAgICAgIHRoaXMuX25ld1Rlc3RHcm91cEZvcm1Gb3JDaGFydCA9IHRoaXMuY29udGVudCgp
LnF1ZXJ5U2VsZWN0b3IoJy5vdmVydmlldy1jaGFydCBjdXN0b21pemFibGUtdGVzdC1ncm91cC1m
b3JtJykuY29tcG9uZW50KCk7CiAgICAgICAgIHRoaXMuX25ld1Rlc3RHcm91cEZvcm1Gb3JDaGFy
dC5zZXRTdGFydENhbGxiYWNrKHRoaXMuX2NyZWF0ZU5ld1Rlc3RHcm91cEZyb21DaGFydC5iaW5k
KHRoaXMpKTsKIAotICAgICAgICB0aGlzLl9uZXdUZXN0R3JvdXBGb3JtRm9yVmlld2VyID0gdGhp
cy5jb250ZW50KCkucXVlcnlTZWxlY3RvcignLmFuYWx5c2lzLXJlc3VsdHMtdmlldyB0ZXN0LWdy
b3VwLWZvcm0nKS5jb21wb25lbnQoKTsKKyAgICAgICAgdGhpcy5fbmV3VGVzdEdyb3VwRm9ybUZv
clZpZXdlciA9IHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5hbmFseXNpcy1yZXN1bHRz
LXZpZXcgY3VzdG9taXphYmxlLXRlc3QtZ3JvdXAtZm9ybScpLmNvbXBvbmVudCgpOwogICAgICAg
ICB0aGlzLl9uZXdUZXN0R3JvdXBGb3JtRm9yVmlld2VyLnNldFN0YXJ0Q2FsbGJhY2sodGhpcy5f
Y3JlYXRlTmV3VGVzdEdyb3VwRnJvbVZpZXdlci5iaW5kKHRoaXMpKTsKLSAgICAgICAgdGhpcy5f
c2VsZWN0ZWRSb3dJbkFuYWx5c2lzUmVzdWx0c1ZpZXdlcigpOwogCiAgICAgICAgIHRoaXMuX3Jl
dHJ5Rm9ybSA9IHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy50ZXN0LWdyb3VwLXJldHJ5
LWZvcm0nKS5maXJzdENoaWxkLmNvbXBvbmVudCgpOwogICAgICAgICB0aGlzLl9yZXRyeUZvcm0u
c2V0U3RhcnRDYWxsYmFjayh0aGlzLl9yZXRyeUN1cnJlbnRUZXN0R3JvdXAuYmluZCh0aGlzKSk7
Ci0gICAgICAgIHRoaXMuX3JldHJ5Rm9ybS5zZXROZWVkc05hbWUoZmFsc2UpOwogICAgIH0KIAog
ICAgIHRpdGxlKCkgeyByZXR1cm4gdGhpcy5fdGFzayA/IHRoaXMuX3Rhc2subGFiZWwoKSA6ICdB
bmFseXNpcyBUYXNrJzsgfQpAQCAtMTk4LDEyICsxOTYsNiBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQ
YWdlIGV4dGVuZHMgUGFnZVdpdGhICiAKICAgICAgICAgdGhpcy5jb250ZW50KCkucXVlcnlTZWxl
Y3RvcignLmVycm9yLW1lc3NhZ2UnKS50ZXh0Q29udGVudCA9IHRoaXMuX2Vycm9yTWVzc2FnZSB8
fCAnJzsKIAotICAgICAgICBpZiAodGhpcy5fdGFzaykgewotICAgICAgICAgICAgdmFyIHYyVVJM
ID0gYC92Mi8jL2FuYWx5c2lzL3Rhc2svJHt0aGlzLl90YXNrLmlkKCl9YDsKLSAgICAgICAgICAg
IHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5lcnJvci1tZXNzYWdlJykuaW5uZXJIVE1M
ID0KLSAgICAgICAgICAgICAgICBgPHA+VG8gc2NoZWR1bGUgYSBjdXN0b20gQS9CIHRlc3Rpbmcs
IHVzZSA8YSBocmVmPSIke3YyVVJMfSI+djIgVUk8L2E+LjwvcD5gOwotICAgICAgICB9Ci0KICAg
ICAgICAgdGhpcy5fY2hhcnRQYW5lLnJlbmRlcigpOwogCiAgICAgICAgIHZhciBlbGVtZW50ID0g
Q29tcG9uZW50QmFzZS5jcmVhdGVFbGVtZW50OwpAQCAtMjU1LDE0ICsyNDcsMjMgQEAgY2xhc3Mg
QW5hbHlzaXNUYXNrUGFnZSBleHRlbmRzIFBhZ2VXaXRoSAogICAgICAgICAgICAgICAgIH0pKTsK
ICAgICAgICAgfQogCisgICAgICAgIHZhciBzZWxlY3RlZFJhbmdlID0gdGhpcy5fYW5hbHlzaXNS
ZXN1bHRzVmlld2VyLnNlbGVjdGVkUmFuZ2UoKTsKKyAgICAgICAgdmFyIGEgPSBzZWxlY3RlZFJh
bmdlWydBJ107CisgICAgICAgIHZhciBiID0gc2VsZWN0ZWRSYW5nZVsnQiddOworICAgICAgICB0
aGlzLl9uZXdUZXN0R3JvdXBGb3JtRm9yVmlld2VyLnNldFJvb3RTZXRNYXAoYSAmJiBiID8geydB
JzogYS5yb290U2V0KCksICdCJzogYi5yb290U2V0KCl9IDogbnVsbCk7CisgICAgICAgIHRoaXMu
X25ld1Rlc3RHcm91cEZvcm1Gb3JWaWV3ZXIucmVuZGVyKCk7CisKKyAgICAgICAgdGhpcy5fcmVu
ZGVyVGVzdEdyb3VwTGlzdCgpOworICAgICAgICB0aGlzLl9yZW5kZXJUZXN0R3JvdXBEZXRhaWxz
KCk7CisKKyAgICAgICAgdmFyIHBvaW50cyA9IHRoaXMuX2NoYXJ0UGFuZS5zZWxlY3RlZFBvaW50
cygpOworICAgICAgICB0aGlzLl9uZXdUZXN0R3JvdXBGb3JtRm9yQ2hhcnQuc2V0Um9vdFNldE1h
cChwb2ludHMgJiYgcG9pbnRzLmxlbmd0aCA+PSAyID8KKyAgICAgICAgICAgICAgICB7J0EnOiBw
b2ludHNbMF0ucm9vdFNldCgpLCAnQic6IHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV0ucm9vdFNl
dCgpfSA6IG51bGwpOwogICAgICAgICB0aGlzLl9uZXdUZXN0R3JvdXBGb3JtRm9yQ2hhcnQucmVu
ZGVyKCk7CiAKICAgICAgICAgdGhpcy5fYW5hbHlzaXNSZXN1bHRzVmlld2VyLnNldEN1cnJlbnRU
ZXN0R3JvdXAodGhpcy5fY3VycmVudFRlc3RHcm91cCk7CiAgICAgICAgIHRoaXMuX2FuYWx5c2lz
UmVzdWx0c1ZpZXdlci5yZW5kZXIoKTsKIAotICAgICAgICB0aGlzLl9yZW5kZXJUZXN0R3JvdXBM
aXN0KCk7Ci0gICAgICAgIHRoaXMuX3JlbmRlclRlc3RHcm91cERldGFpbHMoKTsKLQogICAgICAg
ICB0aGlzLl90ZXN0R3JvdXBSZXN1bHRzVGFibGUucmVuZGVyKCk7CiAKICAgICAgICAgSW5zdHJ1
bWVudGF0aW9uLmVuZE1lYXN1cmluZ1RpbWUoJ0FuYWx5c2lzVGFza1BhZ2UnLCAncmVuZGVyJyk7
CkBAIC00MTcsNjggKzQxOCw3MCBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFn
ZVdpdGhICiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIF9yZXRyeUN1cnJlbnRUZXN0R3JvdXAo
dW51c2VkTmFtZSwgcmVwZXRpdGlvbkNvdW50KQorICAgIF9yZXRyeUN1cnJlbnRUZXN0R3JvdXAo
cmVwZXRpdGlvbkNvdW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fY3Vy
cmVudFRlc3RHcm91cCk7CiAgICAgICAgIHZhciB0ZXN0R3JvdXAgPSB0aGlzLl9jdXJyZW50VGVz
dEdyb3VwOwogICAgICAgICB2YXIgbmV3TmFtZSA9IHRoaXMuX2NyZWF0ZVJldHJ5TmFtZUZvclRl
c3RHcm91cCh0ZXN0R3JvdXAubmFtZSgpKTsKICAgICAgICAgdmFyIHJvb3RTZXRMaXN0ID0gdGVz
dEdyb3VwLnJlcXVlc3RlZFJvb3RTZXRzKCk7Ci0gICAgICAgIHZhciByb290U2V0TGFiZWxzID0g
cm9vdFNldExpc3QubWFwKGZ1bmN0aW9uIChyb290U2V0KSB7IHJldHVybiB0ZXN0R3JvdXAubGFi
ZWxGb3JSb290U2V0KHJvb3RTZXQpOyB9KTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVRl
c3RHcm91cEFmdGVyVmVyaWZ5aW5nUm9vdFNldExpc3QobmV3TmFtZSwgcmVwZXRpdGlvbkNvdW50
LCByb290U2V0TGlzdCwgcm9vdFNldExhYmVscyk7CisKKyAgICAgICAgdmFyIHJvb3RTZXRNYXAg
PSB7fTsKKyAgICAgICAgZm9yICh2YXIgcm9vdFNldCBvZiByb290U2V0TGlzdCkKKyAgICAgICAg
ICAgIHJvb3RTZXRNYXBbdGVzdEdyb3VwLmxhYmVsRm9yUm9vdFNldChyb290U2V0KV0gPSByb290
U2V0OworCisgICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVUZXN0R3JvdXBBZnRlclZlcmlmeWlu
Z1Jvb3RTZXRMaXN0KG5ld05hbWUsIHJlcGV0aXRpb25Db3VudCwgcm9vdFNldE1hcCk7CiAgICAg
fQogCiAgICAgX2NoYXJ0U2VsZWN0aW9uRGlkQ2hhbmdlKCkKICAgICB7Ci0gICAgICAgIHZhciBw
b2ludHMgPSB0aGlzLl9jaGFydFBhbmUuc2VsZWN0ZWRQb2ludHMoKTsKLSAgICAgICAgdGhpcy5f
bmV3VGVzdEdyb3VwRm9ybUZvckNoYXJ0LnNldERpc2FibGVkKCFwb2ludHMgfHwgcG9pbnRzLmxl
bmd0aCA8IDIpOworICAgICAgICB0aGlzLnJlbmRlcigpOwogICAgIH0KIAotICAgIF9jcmVhdGVO
ZXdUZXN0R3JvdXBGcm9tQ2hhcnQobmFtZSwgcmVwZXRpdGlvbkNvdW50KQorICAgIF9jcmVhdGVO
ZXdUZXN0R3JvdXBGcm9tQ2hhcnQobmFtZSwgcmVwZXRpdGlvbkNvdW50LCByb290U2V0TWFwKQog
ICAgIHsKLSAgICAgICAgdmFyIHBvaW50cyA9IHRoaXMuX2NoYXJ0UGFuZS5zZWxlY3RlZFBvaW50
cygpOwotICAgICAgICBjb25zb2xlLmFzc2VydChwb2ludHMgJiYgcG9pbnRzLmxlbmd0aCA+PSAy
KTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVRlc3RHcm91cEFmdGVyVmVyaWZ5aW5nUm9v
dFNldExpc3QobmFtZSwgcmVwZXRpdGlvbkNvdW50LAotICAgICAgICAgICAgW3BvaW50c1swXS5y
b290U2V0KCksIHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV0ucm9vdFNldCgpXSwgWydBJywgJ0In
XSk7CisgICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVUZXN0R3JvdXBBZnRlclZlcmlmeWluZ1Jv
b3RTZXRMaXN0KG5hbWUsIHJlcGV0aXRpb25Db3VudCwgcm9vdFNldE1hcCk7CiAgICAgfQogCiAg
ICAgX3NlbGVjdGVkUm93SW5BbmFseXNpc1Jlc3VsdHNWaWV3ZXIoKQogICAgIHsKLSAgICAgICAg
dmFyIHNlbGVjdGVkUmFuZ2UgPSB0aGlzLl9hbmFseXNpc1Jlc3VsdHNWaWV3ZXIuc2VsZWN0ZWRS
YW5nZSgpOwotICAgICAgICB0aGlzLl9uZXdUZXN0R3JvdXBGb3JtRm9yVmlld2VyLnNldERpc2Fi
bGVkKCFzZWxlY3RlZFJhbmdlWydBJ10gfHwgIXNlbGVjdGVkUmFuZ2VbJ0InXSk7CisgICAgICAg
IHRoaXMucmVuZGVyKCk7CiAgICAgfQogCi0gICAgX2NyZWF0ZU5ld1Rlc3RHcm91cEZyb21WaWV3
ZXIobmFtZSwgcmVwZXRpdGlvbkNvdW50KQorICAgIF9jcmVhdGVOZXdUZXN0R3JvdXBGcm9tVmll
d2VyKG5hbWUsIHJlcGV0aXRpb25Db3VudCwgcm9vdFNldE1hcCkKICAgICB7Ci0gICAgICAgIHZh
ciBzZWxlY3RlZFJhbmdlID0gdGhpcy5fYW5hbHlzaXNSZXN1bHRzVmlld2VyLnNlbGVjdGVkUmFu
Z2UoKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoc2VsZWN0ZWRSYW5nZSAmJiBzZWxlY3RlZFJh
bmdlWydBJ10gJiYgc2VsZWN0ZWRSYW5nZVsnQiddKTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2Ny
ZWF0ZVRlc3RHcm91cEFmdGVyVmVyaWZ5aW5nUm9vdFNldExpc3QobmFtZSwgcmVwZXRpdGlvbkNv
dW50LAotICAgICAgICAgICAgW3NlbGVjdGVkUmFuZ2VbJ0EnXS5yb290U2V0KCksIHNlbGVjdGVk
UmFuZ2VbJ0InXS5yb290U2V0KCldLCBbJ0EnLCAnQiddKTsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X2NyZWF0ZVRlc3RHcm91cEFmdGVyVmVyaWZ5aW5nUm9vdFNldExpc3QobmFtZSwgcmVwZXRpdGlv
bkNvdW50LCByb290U2V0TWFwKTsKICAgICB9CiAKLSAgICBfY3JlYXRlVGVzdEdyb3VwQWZ0ZXJW
ZXJpZnlpbmdSb290U2V0TGlzdCh0ZXN0R3JvdXBOYW1lLCByZXBldGl0aW9uQ291bnQsIHJvb3RT
ZXRMaXN0LCByb290U2V0TGFiZWxzKQorICAgIF9jcmVhdGVUZXN0R3JvdXBBZnRlclZlcmlmeWlu
Z1Jvb3RTZXRMaXN0KHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgcm9vdFNldE1hcCkK
ICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9oYXNEdXBsaWNhdGVUZXN0R3JvdXBOYW1lKHRlc3RH
cm91cE5hbWUpKQogICAgICAgICAgICAgYWxlcnQoYFRoZXJlIGlzIGFscmVhZHkgYSB0ZXN0IGdy
b3VwIG5hbWVkICIke3Rlc3RHcm91cE5hbWV9ImApOwogCiAgICAgICAgIHZhciByb290U2V0c0J5
TmFtZSA9IHt9OwotICAgICAgICBmb3IgKHZhciByZXBvc2l0b3J5IG9mIHJvb3RTZXRMaXN0WzBd
LnJlcG9zaXRvcmllcygpKQotICAgICAgICAgICAgcm9vdFNldHNCeU5hbWVbcmVwb3NpdG9yeS5u
YW1lKCldID0gW107CisgICAgICAgIHZhciBmaXJzdExhYmVsOworICAgICAgICBmb3IgKGZpcnN0
TGFiZWwgaW4gcm9vdFNldE1hcCkgeworICAgICAgICAgICAgdmFyIHJvb3RTZXQgPSByb290U2V0
TWFwW2ZpcnN0TGFiZWxdOworICAgICAgICAgICAgZm9yICh2YXIgcmVwb3NpdG9yeSBvZiByb290
U2V0LnJlcG9zaXRvcmllcygpKQorICAgICAgICAgICAgICAgIHJvb3RTZXRzQnlOYW1lW3JlcG9z
aXRvcnkubmFtZSgpXSA9IFtdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KIAogICAg
ICAgICB2YXIgc2V0SW5kZXggPSAwOwotICAgICAgICBmb3IgKHZhciByb290U2V0IG9mIHJvb3RT
ZXRMaXN0KSB7CisgICAgICAgIGZvciAodmFyIGxhYmVsIGluIHJvb3RTZXRNYXApIHsKKyAgICAg
ICAgICAgIHZhciByb290U2V0ID0gcm9vdFNldE1hcFtsYWJlbF07CiAgICAgICAgICAgICBmb3Ig
KHZhciByZXBvc2l0b3J5IG9mIHJvb3RTZXQucmVwb3NpdG9yaWVzKCkpIHsKICAgICAgICAgICAg
ICAgICB2YXIgbGlzdCA9IHJvb3RTZXRzQnlOYW1lW3JlcG9zaXRvcnkubmFtZSgpXTsKICAgICAg
ICAgICAgICAgICBpZiAoIWxpc3QpIHsKLSAgICAgICAgICAgICAgICAgICAgYWxlcnQoYFNldCAk
e3Jvb3RTZXRMYWJlbHNbc2V0SW5kZXhdfSBzcGVjaWZpZXMgJHtyZXBvc2l0b3J5LmxhYmVsKCl9
IGJ1dCBzZXQgJHtyb290U2V0TGFiZWxzWzBdfSBkb2VzIG5vdC5gKTsKKyAgICAgICAgICAgICAg
ICAgICAgYWxlcnQoYFNldCAke2xhYmVsfSBzcGVjaWZpZXMgJHtyZXBvc2l0b3J5LmxhYmVsKCl9
IGJ1dCBzZXQgJHtmaXJzdExhYmVsfSBkb2VzIG5vdC5gKTsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGxpc3QucHVz
aChyb290U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkucmV2aXNpb24oKSk7Cisg
ICAgICAgICAgICAgICAgbGlzdC5wdXNoKHJvb3RTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHJl
cG9zaXRvcnkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNldEluZGV4Kys7CiAgICAg
ICAgICAgICBmb3IgKHZhciBuYW1lIGluIHJvb3RTZXRzQnlOYW1lKSB7CiAgICAgICAgICAgICAg
ICAgdmFyIGxpc3QgPSByb290U2V0c0J5TmFtZVtuYW1lXTsKICAgICAgICAgICAgICAgICBpZiAo
bGlzdC5sZW5ndGggPCBzZXRJbmRleCkgewotICAgICAgICAgICAgICAgICAgICBhbGVydChgU2V0
ICR7cm9vdFNldExhYmVsc1swXX0gc3BlY2lmaWVzICR7cmVwb3NpdG9yeS5sYWJlbCgpfSBidXQg
c2V0ICR7cm9vdFNldExhYmVsc1tzZXRJbmRleF19IGRvZXMgbm90LmApOworICAgICAgICAgICAg
ICAgICAgICBhbGVydChgU2V0ICR7Zmlyc3RMYWJlbH0gc3BlY2lmaWVzICR7cmVwb3NpdG9yeS5s
YWJlbCgpfSBidXQgc2V0ICR7bGFiZWx9IGRvZXMgbm90LmApOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC01NTUs
MTEgKzU1OCwxMSBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhICiAg
ICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9Im92
ZXJ2aWV3LWNoYXJ0Ij4KICAgICAgICAgICAgICAgICAgICAgPGFuYWx5c2lzLXRhc2stY2hhcnQt
cGFuZT48L2FuYWx5c2lzLXRhc2stY2hhcnQtcGFuZT4KLSAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0ibmV3LXRlc3QtZ3JvdXAtZm9ybSI+PHRlc3QtZ3JvdXAtZm9ybT48L3Rlc3QtZ3Jv
dXAtZm9ybT48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmV3LXRlc3Qt
Z3JvdXAtZm9ybSI+PGN1c3RvbWl6YWJsZS10ZXN0LWdyb3VwLWZvcm0+PC9jdXN0b21pemFibGUt
dGVzdC1ncm91cC1mb3JtPjwvZGl2PgogICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAg
ICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0iYW5hbHlzaXMtcmVzdWx0cy12aWV3Ij4KICAgICAg
ICAgICAgICAgICAgICAgPGFuYWx5c2lzLXJlc3VsdHMtdmlld2VyPjwvYW5hbHlzaXMtcmVzdWx0
cy12aWV3ZXI+Ci0gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5ldy10ZXN0LWdyb3Vw
LWZvcm0iPjx0ZXN0LWdyb3VwLWZvcm0+PC90ZXN0LWdyb3VwLWZvcm0+PC9kaXY+CisgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5ldy10ZXN0LWdyb3VwLWZvcm0iPjxjdXN0b21pemFi
bGUtdGVzdC1ncm91cC1mb3JtPjwvY3VzdG9taXphYmxlLXRlc3QtZ3JvdXAtZm9ybT48L2Rpdj4K
ICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xh
c3M9InRlc3QtZ3JvdXAtdmlldyI+CiAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0idGVz
dC1ncm91cC1saXN0Ij48L3VsPgpAQCAtNjE1LDcgKzYxOCw5IEBAIGNsYXNzIEFuYWx5c2lzVGFz
a1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEgKICAgICAgICAgICAgIC5hbmFseXNpcy10YXNrLXN0YXR1
cyB7CiAgICAgICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgICAgICAgICAgIGRpc3BsYXk6
IGZsZXg7Ci0gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMS41cmVtOworICAgICAgICAg
ICAgICAgIHBhZGRpbmctYm90dG9tOiAxcmVtOworICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0
b206IDFyZW07CisgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogc29saWQgMXB4ICNjY2M7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC5hbmFseXNpcy10YXNrLXN0YXR1cyA+IHNl
Y3Rpb24gewpAQCAtNjUwLDggKzY1NSwxMiBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVu
ZHMgUGFnZVdpdGhICiAgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsOwogICAgICAg
ICAgICAgfQogCisKICAgICAgICAgICAgIC5hbmFseXNpcy1yZXN1bHRzLXZpZXcgewotICAgICAg
ICAgICAgICAgIG1hcmdpbjogMi41cmVtIDFyZW07CisgICAgICAgICAgICAgICAgYm9yZGVyLXRv
cDogc29saWQgMXB4ICNjY2M7CisgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogc29saWQg
MXB4ICNjY2M7CisgICAgICAgICAgICAgICAgbWFyZ2luOiAxcmVtIDA7CisgICAgICAgICAgICAg
ICAgcGFkZGluZzogMXJlbTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLnRlc3QtY29u
ZmlndXJhdGlvbiBoMyB7Cg==
</data>
<flag name="review"
          id="296443"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>