Upstart Personal Loans Review

By Mentor Staff | Edited By Mentor Staff

Updated On December 18, 2021

Editorial Note: This content is based solely on the author's opinions and is not provided, approved, endorsed or reviewed by any financial institution or partner.

How do we make money? The products featured on this website are from our partners who compensate us. This may impact which companies we review, the products we evaluate, and where and how a product appears on a page. We receive compensation from a partner when you apply for and receive a product through Mentor. This helps us to support our website, offer free content, tools and calculators, and continue to be one of the leading sources on personal finance.

Company Overview: Upstart

Founded by ex-Googlers in 2012, Upstart is the first lending platform to leverage artificial intelligence and machine learning to price credit and automate the borrowing process for personal loans.Upstart is a technology-drive platform that makes personal loans to borrowers with have limited or no credit history, but who have a bright financial future with high earning potential. Upstart goes beyond FICO and uses non-conventional variables to provide superior loan performance and improve consumers’ access to credit.

How Upstart Compares: Key Benefits Of Upstart’s Personal loan

Here are some of the reasons that Upstart borrowers love Upstart personal loans:

  • Easy Online Application: You can apply for an Upstart personal loan completely online.
  • Rate Discount: Upstart offers a rate discount on personal loans to borrowers who learn how to code.
  • Coding Boot Camp: You can use an Upstart personal loan to cover the cost of tuition for a coding boot camp.
  • Fast Funding: Funds are disbursed typically within 1 day. Education loans (such as for coding boot camp) are typically funded within three days.
  • Customer Service: Upstart offers live customer support 6 days a week

Eligibility Criteria

To apply for an Upstart personal loan, you need to meet the following eligibility criteria:

Requirements To Apply For Upstart Personal loan

Minimum Age: At least age of majority in your state

Citizenship/Residency: U.S. citizen or permanent resident (applies to co-signer too, if any)

Loan eligibility depends on a number of additional factors, which may include your credit profile, education, income and total debt payments.

Bottom Line: Is Upstart right for you?

Upstart has a top reputation for personal loans.

You may be a good fit for Upstart if:

  • You have a credit score of at least 620
  • If you have no credit history, Upstart will use other factors to evaluate your personal loan application such as your education degrees, major area of study, employment and income.In addition to using FICO and your credit history, Upstart evaluates other factors to evaluate your creditworthiness.
  • You have a bright financial future with high earning potential.
  • You have recurring annual income of at least $12,000, whether it is from a full-time job, part-time job or offer letter.
  • You have a debt-to-income ratio of no more than 45%

If you are interested in attending a coding boot camp, Upstart may provide you with a personal loan to cover the cost of tuition – even if you do not have a regular source of income. However, you do need a college degree to qualify.

Next Steps: How To Apply To Upstart

You can apply for an Upstart personal loan in 3 easy steps.

Step 1: Check your personalized personal loan rate in just 2 minutes.

Step 2: Complete application and upload documents.

Step 3: Accept loan terms and get funded in only 1 day (or 3 days if for a coding boot camp tuition).

The good news is that you can check your new personal loan rate online with Upstart before you complete the full application. This way, you’ll know whether you can be approved for Upstart personal loan. Therefore, Upstart will provide you with an estimated personal loan rate. The pre-approval is only a soft credit pull so there is no impact to your credit.

If you have been pre-approved, you’ll need at least the following documents to complete the online application (which takes about 10-15 minutes):

  • Your most recent pay stubs
  • Driver’s license or passport (or other form of government-issued identification)
  • College transcripts or SAT scores, if applying for a personal loan to cover tuition at a coding boot camp

Funding for your personal loan is quick and can occur within 1 day (or 3 days if for coding camp).

Applying is super easy – Get your personalized rate in 2 minutes

Top Picks For Personal Loans

PD9waHAKCWVjaG8gZGF0ZSgnRicpIC4gIiAiIC4gZGF0ZSgiWSIpOwo/Pg==

PGRpdiBjbGFzcz0ibGVuZGVycy10YWJsZS1oZWFkZXItcm93LXdyYXBwZXIiPgoJPGRpdiBjbGFzcz0ibGVuZGVycy10YWJsZS1oZWFkZXItcm93Ij4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItbG9nby1oZWFkZXIgbGVuZGVycy10YWJsZS1oZWFkZXItY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFwci1oZWFkZXIgbGVuZGVycy10YWJsZS1oZWFkZXItY2VsbCI+CgkJCUFQUiA8c3BhbiBjbGFzcz0ibW9yZS1pbmZvLXRvb2x0aXAtdHJpZ2dlciI+PzxzcGFuIGNsYXNzPSJtb3JlLWluZm8tdG9vbHRpcC10ZXh0Ij5BUFIsIG9yIEFubnVhbCBQZXJjZW50YWdlIFJhdGUsIGlzIHRoZSBwcmljZSB5b3UgcGF5IHRvIGJvcnJvdyBtb25leS4gVmFyaWFibGUgQVBSIG1lYW5zIHRoYXQgeW91ciBpbnRlcmVzdCBjYW4gZmx1Y3R1YXRlIG92ZXIgdGltZSwgd2hpY2ggY2FuIGluY3JlYXNlIG9yIGRlY3JlYXNlIHlvdXIgbW9udGhseSBwYXltZW50LiBGaXhlZCBBUFIgbWVhbnMgdGhhdCB5b3VyIGludGVyZXN0IHdpbGwgYWx3YXlzIHN0YXkgdGhlIHNhbWUuIEV2ZW4gaWYgaW50ZXJlc3QgcmF0ZXMgY2hhbmdlLCB5b3VyIGludGVyZXN0IHJhdGUgb3IgbW9udGhseSBwYXltZW50IHdpbGwgbm90LiBBUFIgaW5jbHVkZXMgYSAwLjI1JSBkaXNjb3VudCB3aGVuIHlvdSBlbnJvbGwgaW4gYXV0b3BheS48L3NwYW4+PC9zcGFuPgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uLWhlYWRlciBsZW5kZXJzLXRhYmxlLWhlYWRlci1jZWxsIj4KCQk8L2Rpdj4KCTwvZGl2Pgo8L2Rpdj4=
PGRpdiBjbGFzcz0ibGVuZGVyLXJvdy13cmFwcGVyIj4KCTxkaXYgY2xhc3M9ImxlbmRlci1wcmltYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1BMIC0gJyAuIGdldF90aGVfdGl0bGUoKTsgPz4iIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncGxfbGVuZGVyX2FmZmlsaWF0ZV9saW5rJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJsZW5kZXItbG9nby1saW5rIj4KCQkJCTxpbWcgc3JjPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9sb2dvJyApWyd1cmwnXTsgPz4iIGFsdD0iPD9waHAgdGhlX3RpdGxlKCk7ID8+IiBjbGFzcz0ibGVuZGVyLWxvZ28iIC8+CgkJCTwvYT4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdwbF9sZW5kZXJfYXByX2xvd2VyX2xpbWl0JyApOyA/PiUgLSA8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9hcHJfdXBwZXJfbGltaXQnICk7ID8+JQoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uLXdyYXBwZXIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8YSBkYXRhLWV2ZW50LWxhYmVsPSI8P3BocCBlY2hvICdQTCAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9hZmZpbGlhdGVfbGluaycgKTsgPz4iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vZm9sbG93IiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24iPgoJCQkJR2V0IE15IFJhdGUKCQkJPC9hPgoJCTwvZGl2PgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItc2Vjb25kYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28tc2Vjb25kYXJ5LXJvdy1jZWxsIGxlbmRlci1zZWNvbmRhcnktcm93LWNlbGwiPgoJCQk8cCBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy10cmlnZ2VyIj4KCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmsgbGVuZGVyLXZpZXctZGV0YWlscy1saW5rLTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJCQkJPHNwYW4gY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtbGluay1hcnJvdyI+PC9zcGFuPlZpZXcgRGV0YWlscwoJCQkJPHNwYW4+CgkJCTwvcD4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJCTxwIGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1oZWxwZXItdGV4dCI+CgkJCQk8P3BocAoJCQkJCWlmKCBzdHJfZW5kc193aXRoKCBnZXRfZmllbGQoICdwbF9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICksICdzJyApICkKCQkJCQl7CgkJCQkJCWVjaG8gJ29uICcgLiBnZXRfZmllbGQoICdwbF9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCcgd2Vic2l0ZSc7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCWVjaG8gJ29uICcgLiBnZXRfZmllbGQoICdwbF9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCdzIHdlYnNpdGUnOwoJCQkJCX0KCQkJCT8+CgkJCTwvcD4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdyBsZW5kZXItY29sbGFwc2libGUtcm93LTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2xzIj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMSI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJT3ZlcnZpZXcKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBDcmVkaXQgU2NvcmU6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9taW5pbXVtX2NyZWRpdF9zY29yZScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gTG9hbiBBbW91bnQ6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9taW5pbXVtX2xvYW5fYW1vdW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWF4aW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncGxfbGVuZGVyX21heGltdW1fbG9hbl9hbW91bnQnICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlMb2FuIFRlcm1zOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdwbF9sZW5kZXJfbG9hbl90ZXJtcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gSW5jb21lOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdwbF9sZW5kZXJfbWluaW11bV9pbmNvbWUnICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC0yIj4KCQkJCTxoMyBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtaGVhZGVyIj4KCQkJCQlEZXRhaWxzCgkJCQk8L2gzPgoJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtY29udGVudCI+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU9yaWdpbmF0aW9uIEZlZXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9vcmlnaW5hdGlvbl9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTGF0ZSBGZWVzOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdwbF9sZW5kZXJfbGF0ZV9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJUHJlcGF5bWVudCBQZW5hbHR5OgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdwbF9sZW5kZXJfcHJlcGF5bWVudF9wZW5hbHR5JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJU29mdCBDcmVkaXQgQ2hlY2s6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9zb2Z0X2NyZWRpdF9jaGVjaycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJPC9kaXY+CgkJPD9waHAgaWYgKCBnZXRfZmllbGQoICdwbF9sZW5kZXJfcmV2aWV3X3VybCcgKSApOiA/PgoJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXJldmlldyI+CgkJCQk8cCBjbGFzcz0ibGVuZGVyLXJldmlldy1oZWFkaW5nIj4KCQkJCQlSZXZpZXc6CgkJCQk8L3A+CgkJCQk8cD4KCQkJCQk8YSBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBQZXJzb25hbCBMb2FuIFJldmlldzwvYT4KCQkJCTwvcD4KCQkJPC9kaXY+CgkJPD9waHAgZW5kaWY7ID8+Cgk8L2Rpdj4KPC9kaXY+Cjw/cGhwCgllY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+JzsKCSRsZW5kZXJfdmlld19kZXRhaWxzX2xpbmtfanNfdmFyID0gJ2xlbmRlcl92aWV3X2RldGFpbHNfbGlua18nIC4gZ2V0X3RoZV9pZCgpOwoJJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyID0gJ2xlbmRlcl9jb2xsYXBzaWJsZV9yb3dfJyAuIGdldF90aGVfaWQoKTsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLXZpZXctZGV0YWlscy1saW5rLScgLiBnZXRfdGhlX2lkKCkgLiAnIilbMF07JzsKCWVjaG8gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7JzsKCWVjaG8gJ3RoaXMuY2xhc3NMaXN0LnRvZ2dsZSgiYWN0aXZlIik7JzsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAnaWYgKCcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCkgeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gbnVsbDsnOwoJZWNobyAnfSBlbHNlIHsnOwoJZWNobyAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCA9ICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnNjcm9sbEhlaWdodCArICJweCI7JzsKCWVjaG8gJ30nOwoJZWNobyAnfSk7JzsKCWVjaG8gJzwvc2NyaXB0Pic7Cj8+ PGRpdiBjbGFzcz0ibGVuZGVyLXJvdy13cmFwcGVyIj4KCTxkaXYgY2xhc3M9ImxlbmRlci1wcmltYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1BMIC0gJyAuIGdldF90aGVfdGl0bGUoKTsgPz4iIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncGxfbGVuZGVyX2FmZmlsaWF0ZV9saW5rJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJsZW5kZXItbG9nby1saW5rIj4KCQkJCTxpbWcgc3JjPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9sb2dvJyApWyd1cmwnXTsgPz4iIGFsdD0iPD9waHAgdGhlX3RpdGxlKCk7ID8+IiBjbGFzcz0ibGVuZGVyLWxvZ28iIC8+CgkJCTwvYT4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdwbF9sZW5kZXJfYXByX2xvd2VyX2xpbWl0JyApOyA/PiUgLSA8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9hcHJfdXBwZXJfbGltaXQnICk7ID8+JQoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uLXdyYXBwZXIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8YSBkYXRhLWV2ZW50LWxhYmVsPSI8P3BocCBlY2hvICdQTCAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9hZmZpbGlhdGVfbGluaycgKTsgPz4iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vZm9sbG93IiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24iPgoJCQkJR2V0IE15IFJhdGUKCQkJPC9hPgoJCTwvZGl2PgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItc2Vjb25kYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28tc2Vjb25kYXJ5LXJvdy1jZWxsIGxlbmRlci1zZWNvbmRhcnktcm93LWNlbGwiPgoJCQk8cCBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy10cmlnZ2VyIj4KCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmsgbGVuZGVyLXZpZXctZGV0YWlscy1saW5rLTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJCQkJPHNwYW4gY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtbGluay1hcnJvdyI+PC9zcGFuPlZpZXcgRGV0YWlscwoJCQkJPHNwYW4+CgkJCTwvcD4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJCTxwIGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1oZWxwZXItdGV4dCI+CgkJCQk8P3BocAoJCQkJCWlmKCBzdHJfZW5kc193aXRoKCBnZXRfZmllbGQoICdwbF9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICksICdzJyApICkKCQkJCQl7CgkJCQkJCWVjaG8gJ29uICcgLiBnZXRfZmllbGQoICdwbF9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCcgd2Vic2l0ZSc7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCWVjaG8gJ29uICcgLiBnZXRfZmllbGQoICdwbF9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCdzIHdlYnNpdGUnOwoJCQkJCX0KCQkJCT8+CgkJCTwvcD4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdyBsZW5kZXItY29sbGFwc2libGUtcm93LTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2xzIj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMSI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJT3ZlcnZpZXcKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBDcmVkaXQgU2NvcmU6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9taW5pbXVtX2NyZWRpdF9zY29yZScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gTG9hbiBBbW91bnQ6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9taW5pbXVtX2xvYW5fYW1vdW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWF4aW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncGxfbGVuZGVyX21heGltdW1fbG9hbl9hbW91bnQnICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlMb2FuIFRlcm1zOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdwbF9sZW5kZXJfbG9hbl90ZXJtcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gSW5jb21lOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdwbF9sZW5kZXJfbWluaW11bV9pbmNvbWUnICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC0yIj4KCQkJCTxoMyBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtaGVhZGVyIj4KCQkJCQlEZXRhaWxzCgkJCQk8L2gzPgoJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtY29udGVudCI+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU9yaWdpbmF0aW9uIEZlZXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9vcmlnaW5hdGlvbl9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTGF0ZSBGZWVzOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdwbF9sZW5kZXJfbGF0ZV9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJUHJlcGF5bWVudCBQZW5hbHR5OgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdwbF9sZW5kZXJfcHJlcGF5bWVudF9wZW5hbHR5JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJU29mdCBDcmVkaXQgQ2hlY2s6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9zb2Z0X2NyZWRpdF9jaGVjaycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJPC9kaXY+CgkJPD9waHAgaWYgKCBnZXRfZmllbGQoICdwbF9sZW5kZXJfcmV2aWV3X3VybCcgKSApOiA/PgoJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXJldmlldyI+CgkJCQk8cCBjbGFzcz0ibGVuZGVyLXJldmlldy1oZWFkaW5nIj4KCQkJCQlSZXZpZXc6CgkJCQk8L3A+CgkJCQk8cD4KCQkJCQk8YSBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBQZXJzb25hbCBMb2FuIFJldmlldzwvYT4KCQkJCTwvcD4KCQkJPC9kaXY+CgkJPD9waHAgZW5kaWY7ID8+Cgk8L2Rpdj4KPC9kaXY+Cjw/cGhwCgllY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+JzsKCSRsZW5kZXJfdmlld19kZXRhaWxzX2xpbmtfanNfdmFyID0gJ2xlbmRlcl92aWV3X2RldGFpbHNfbGlua18nIC4gZ2V0X3RoZV9pZCgpOwoJJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyID0gJ2xlbmRlcl9jb2xsYXBzaWJsZV9yb3dfJyAuIGdldF90aGVfaWQoKTsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLXZpZXctZGV0YWlscy1saW5rLScgLiBnZXRfdGhlX2lkKCkgLiAnIilbMF07JzsKCWVjaG8gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7JzsKCWVjaG8gJ3RoaXMuY2xhc3NMaXN0LnRvZ2dsZSgiYWN0aXZlIik7JzsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAnaWYgKCcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCkgeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gbnVsbDsnOwoJZWNobyAnfSBlbHNlIHsnOwoJZWNobyAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCA9ICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnNjcm9sbEhlaWdodCArICJweCI7JzsKCWVjaG8gJ30nOwoJZWNobyAnfSk7JzsKCWVjaG8gJzwvc2NyaXB0Pic7Cj8+ PGRpdiBjbGFzcz0ibGVuZGVyLXJvdy13cmFwcGVyIj4KCTxkaXYgY2xhc3M9ImxlbmRlci1wcmltYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1BMIC0gJyAuIGdldF90aGVfdGl0bGUoKTsgPz4iIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncGxfbGVuZGVyX2FmZmlsaWF0ZV9saW5rJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJsZW5kZXItbG9nby1saW5rIj4KCQkJCTxpbWcgc3JjPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9sb2dvJyApWyd1cmwnXTsgPz4iIGFsdD0iPD9waHAgdGhlX3RpdGxlKCk7ID8+IiBjbGFzcz0ibGVuZGVyLWxvZ28iIC8+CgkJCTwvYT4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdwbF9sZW5kZXJfYXByX2xvd2VyX2xpbWl0JyApOyA/PiUgLSA8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9hcHJfdXBwZXJfbGltaXQnICk7ID8+JQoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uLXdyYXBwZXIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8YSBkYXRhLWV2ZW50LWxhYmVsPSI8P3BocCBlY2hvICdQTCAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9hZmZpbGlhdGVfbGluaycgKTsgPz4iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vZm9sbG93IiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24iPgoJCQkJR2V0IE15IFJhdGUKCQkJPC9hPgoJCTwvZGl2PgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItc2Vjb25kYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28tc2Vjb25kYXJ5LXJvdy1jZWxsIGxlbmRlci1zZWNvbmRhcnktcm93LWNlbGwiPgoJCQk8cCBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy10cmlnZ2VyIj4KCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmsgbGVuZGVyLXZpZXctZGV0YWlscy1saW5rLTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJCQkJPHNwYW4gY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtbGluay1hcnJvdyI+PC9zcGFuPlZpZXcgRGV0YWlscwoJCQkJPHNwYW4+CgkJCTwvcD4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJCTxwIGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1oZWxwZXItdGV4dCI+CgkJCQk8P3BocAoJCQkJCWlmKCBzdHJfZW5kc193aXRoKCBnZXRfZmllbGQoICdwbF9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICksICdzJyApICkKCQkJCQl7CgkJCQkJCWVjaG8gJ29uICcgLiBnZXRfZmllbGQoICdwbF9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCcgd2Vic2l0ZSc7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCWVjaG8gJ29uICcgLiBnZXRfZmllbGQoICdwbF9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCdzIHdlYnNpdGUnOwoJCQkJCX0KCQkJCT8+CgkJCTwvcD4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdyBsZW5kZXItY29sbGFwc2libGUtcm93LTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2xzIj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMSI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJT3ZlcnZpZXcKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBDcmVkaXQgU2NvcmU6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9taW5pbXVtX2NyZWRpdF9zY29yZScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gTG9hbiBBbW91bnQ6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9taW5pbXVtX2xvYW5fYW1vdW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWF4aW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncGxfbGVuZGVyX21heGltdW1fbG9hbl9hbW91bnQnICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlMb2FuIFRlcm1zOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdwbF9sZW5kZXJfbG9hbl90ZXJtcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gSW5jb21lOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdwbF9sZW5kZXJfbWluaW11bV9pbmNvbWUnICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC0yIj4KCQkJCTxoMyBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtaGVhZGVyIj4KCQkJCQlEZXRhaWxzCgkJCQk8L2gzPgoJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtY29udGVudCI+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU9yaWdpbmF0aW9uIEZlZXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9vcmlnaW5hdGlvbl9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTGF0ZSBGZWVzOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdwbF9sZW5kZXJfbGF0ZV9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJUHJlcGF5bWVudCBQZW5hbHR5OgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdwbF9sZW5kZXJfcHJlcGF5bWVudF9wZW5hbHR5JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJU29mdCBDcmVkaXQgQ2hlY2s6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9zb2Z0X2NyZWRpdF9jaGVjaycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJPC9kaXY+CgkJPD9waHAgaWYgKCBnZXRfZmllbGQoICdwbF9sZW5kZXJfcmV2aWV3X3VybCcgKSApOiA/PgoJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXJldmlldyI+CgkJCQk8cCBjbGFzcz0ibGVuZGVyLXJldmlldy1oZWFkaW5nIj4KCQkJCQlSZXZpZXc6CgkJCQk8L3A+CgkJCQk8cD4KCQkJCQk8YSBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBQZXJzb25hbCBMb2FuIFJldmlldzwvYT4KCQkJCTwvcD4KCQkJPC9kaXY+CgkJPD9waHAgZW5kaWY7ID8+Cgk8L2Rpdj4KPC9kaXY+Cjw/cGhwCgllY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+JzsKCSRsZW5kZXJfdmlld19kZXRhaWxzX2xpbmtfanNfdmFyID0gJ2xlbmRlcl92aWV3X2RldGFpbHNfbGlua18nIC4gZ2V0X3RoZV9pZCgpOwoJJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyID0gJ2xlbmRlcl9jb2xsYXBzaWJsZV9yb3dfJyAuIGdldF90aGVfaWQoKTsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLXZpZXctZGV0YWlscy1saW5rLScgLiBnZXRfdGhlX2lkKCkgLiAnIilbMF07JzsKCWVjaG8gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7JzsKCWVjaG8gJ3RoaXMuY2xhc3NMaXN0LnRvZ2dsZSgiYWN0aXZlIik7JzsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAnaWYgKCcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCkgeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gbnVsbDsnOwoJZWNobyAnfSBlbHNlIHsnOwoJZWNobyAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCA9ICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnNjcm9sbEhlaWdodCArICJweCI7JzsKCWVjaG8gJ30nOwoJZWNobyAnfSk7JzsKCWVjaG8gJzwvc2NyaXB0Pic7Cj8+ PGRpdiBjbGFzcz0ibGVuZGVyLXJvdy13cmFwcGVyIj4KCTxkaXYgY2xhc3M9ImxlbmRlci1wcmltYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1BMIC0gJyAuIGdldF90aGVfdGl0bGUoKTsgPz4iIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncGxfbGVuZGVyX2FmZmlsaWF0ZV9saW5rJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJsZW5kZXItbG9nby1saW5rIj4KCQkJCTxpbWcgc3JjPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9sb2dvJyApWyd1cmwnXTsgPz4iIGFsdD0iPD9waHAgdGhlX3RpdGxlKCk7ID8+IiBjbGFzcz0ibGVuZGVyLWxvZ28iIC8+CgkJCTwvYT4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdwbF9sZW5kZXJfYXByX2xvd2VyX2xpbWl0JyApOyA/PiUgLSA8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9hcHJfdXBwZXJfbGltaXQnICk7ID8+JQoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uLXdyYXBwZXIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8YSBkYXRhLWV2ZW50LWxhYmVsPSI8P3BocCBlY2hvICdQTCAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9hZmZpbGlhdGVfbGluaycgKTsgPz4iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vZm9sbG93IiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24iPgoJCQkJR2V0IE15IFJhdGUKCQkJPC9hPgoJCTwvZGl2PgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItc2Vjb25kYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28tc2Vjb25kYXJ5LXJvdy1jZWxsIGxlbmRlci1zZWNvbmRhcnktcm93LWNlbGwiPgoJCQk8cCBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy10cmlnZ2VyIj4KCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmsgbGVuZGVyLXZpZXctZGV0YWlscy1saW5rLTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJCQkJPHNwYW4gY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtbGluay1hcnJvdyI+PC9zcGFuPlZpZXcgRGV0YWlscwoJCQkJPHNwYW4+CgkJCTwvcD4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJCTxwIGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1oZWxwZXItdGV4dCI+CgkJCQk8P3BocAoJCQkJCWlmKCBzdHJfZW5kc193aXRoKCBnZXRfZmllbGQoICdwbF9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICksICdzJyApICkKCQkJCQl7CgkJCQkJCWVjaG8gJ29uICcgLiBnZXRfZmllbGQoICdwbF9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCcgd2Vic2l0ZSc7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCWVjaG8gJ29uICcgLiBnZXRfZmllbGQoICdwbF9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCdzIHdlYnNpdGUnOwoJCQkJCX0KCQkJCT8+CgkJCTwvcD4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdyBsZW5kZXItY29sbGFwc2libGUtcm93LTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2xzIj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMSI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJT3ZlcnZpZXcKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBDcmVkaXQgU2NvcmU6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9taW5pbXVtX2NyZWRpdF9zY29yZScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gTG9hbiBBbW91bnQ6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9taW5pbXVtX2xvYW5fYW1vdW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWF4aW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncGxfbGVuZGVyX21heGltdW1fbG9hbl9hbW91bnQnICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlMb2FuIFRlcm1zOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdwbF9sZW5kZXJfbG9hbl90ZXJtcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gSW5jb21lOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdwbF9sZW5kZXJfbWluaW11bV9pbmNvbWUnICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC0yIj4KCQkJCTxoMyBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtaGVhZGVyIj4KCQkJCQlEZXRhaWxzCgkJCQk8L2gzPgoJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtY29udGVudCI+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU9yaWdpbmF0aW9uIEZlZXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9vcmlnaW5hdGlvbl9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTGF0ZSBGZWVzOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdwbF9sZW5kZXJfbGF0ZV9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJUHJlcGF5bWVudCBQZW5hbHR5OgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdwbF9sZW5kZXJfcHJlcGF5bWVudF9wZW5hbHR5JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJU29mdCBDcmVkaXQgQ2hlY2s6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9zb2Z0X2NyZWRpdF9jaGVjaycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJPC9kaXY+CgkJPD9waHAgaWYgKCBnZXRfZmllbGQoICdwbF9sZW5kZXJfcmV2aWV3X3VybCcgKSApOiA/PgoJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXJldmlldyI+CgkJCQk8cCBjbGFzcz0ibGVuZGVyLXJldmlldy1oZWFkaW5nIj4KCQkJCQlSZXZpZXc6CgkJCQk8L3A+CgkJCQk8cD4KCQkJCQk8YSBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBQZXJzb25hbCBMb2FuIFJldmlldzwvYT4KCQkJCTwvcD4KCQkJPC9kaXY+CgkJPD9waHAgZW5kaWY7ID8+Cgk8L2Rpdj4KPC9kaXY+Cjw/cGhwCgllY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+JzsKCSRsZW5kZXJfdmlld19kZXRhaWxzX2xpbmtfanNfdmFyID0gJ2xlbmRlcl92aWV3X2RldGFpbHNfbGlua18nIC4gZ2V0X3RoZV9pZCgpOwoJJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyID0gJ2xlbmRlcl9jb2xsYXBzaWJsZV9yb3dfJyAuIGdldF90aGVfaWQoKTsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLXZpZXctZGV0YWlscy1saW5rLScgLiBnZXRfdGhlX2lkKCkgLiAnIilbMF07JzsKCWVjaG8gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7JzsKCWVjaG8gJ3RoaXMuY2xhc3NMaXN0LnRvZ2dsZSgiYWN0aXZlIik7JzsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAnaWYgKCcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCkgeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gbnVsbDsnOwoJZWNobyAnfSBlbHNlIHsnOwoJZWNobyAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCA9ICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnNjcm9sbEhlaWdodCArICJweCI7JzsKCWVjaG8gJ30nOwoJZWNobyAnfSk7JzsKCWVjaG8gJzwvc2NyaXB0Pic7Cj8+ PGRpdiBjbGFzcz0ibGVuZGVyLXJvdy13cmFwcGVyIj4KCTxkaXYgY2xhc3M9ImxlbmRlci1wcmltYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1BMIC0gJyAuIGdldF90aGVfdGl0bGUoKTsgPz4iIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncGxfbGVuZGVyX2FmZmlsaWF0ZV9saW5rJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJsZW5kZXItbG9nby1saW5rIj4KCQkJCTxpbWcgc3JjPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9sb2dvJyApWyd1cmwnXTsgPz4iIGFsdD0iPD9waHAgdGhlX3RpdGxlKCk7ID8+IiBjbGFzcz0ibGVuZGVyLWxvZ28iIC8+CgkJCTwvYT4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdwbF9sZW5kZXJfYXByX2xvd2VyX2xpbWl0JyApOyA/PiUgLSA8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9hcHJfdXBwZXJfbGltaXQnICk7ID8+JQoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uLXdyYXBwZXIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8YSBkYXRhLWV2ZW50LWxhYmVsPSI8P3BocCBlY2hvICdQTCAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9hZmZpbGlhdGVfbGluaycgKTsgPz4iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vZm9sbG93IiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24iPgoJCQkJR2V0IE15IFJhdGUKCQkJPC9hPgoJCTwvZGl2PgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItc2Vjb25kYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28tc2Vjb25kYXJ5LXJvdy1jZWxsIGxlbmRlci1zZWNvbmRhcnktcm93LWNlbGwiPgoJCQk8cCBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy10cmlnZ2VyIj4KCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmsgbGVuZGVyLXZpZXctZGV0YWlscy1saW5rLTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJCQkJPHNwYW4gY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtbGluay1hcnJvdyI+PC9zcGFuPlZpZXcgRGV0YWlscwoJCQkJPHNwYW4+CgkJCTwvcD4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJCTxwIGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1oZWxwZXItdGV4dCI+CgkJCQk8P3BocAoJCQkJCWlmKCBzdHJfZW5kc193aXRoKCBnZXRfZmllbGQoICdwbF9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICksICdzJyApICkKCQkJCQl7CgkJCQkJCWVjaG8gJ29uICcgLiBnZXRfZmllbGQoICdwbF9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCcgd2Vic2l0ZSc7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCWVjaG8gJ29uICcgLiBnZXRfZmllbGQoICdwbF9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCdzIHdlYnNpdGUnOwoJCQkJCX0KCQkJCT8+CgkJCTwvcD4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdyBsZW5kZXItY29sbGFwc2libGUtcm93LTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2xzIj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMSI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJT3ZlcnZpZXcKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBDcmVkaXQgU2NvcmU6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9taW5pbXVtX2NyZWRpdF9zY29yZScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gTG9hbiBBbW91bnQ6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9taW5pbXVtX2xvYW5fYW1vdW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWF4aW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncGxfbGVuZGVyX21heGltdW1fbG9hbl9hbW91bnQnICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlMb2FuIFRlcm1zOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdwbF9sZW5kZXJfbG9hbl90ZXJtcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gSW5jb21lOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdwbF9sZW5kZXJfbWluaW11bV9pbmNvbWUnICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC0yIj4KCQkJCTxoMyBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtaGVhZGVyIj4KCQkJCQlEZXRhaWxzCgkJCQk8L2gzPgoJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtY29udGVudCI+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU9yaWdpbmF0aW9uIEZlZXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9vcmlnaW5hdGlvbl9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTGF0ZSBGZWVzOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdwbF9sZW5kZXJfbGF0ZV9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJUHJlcGF5bWVudCBQZW5hbHR5OgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdwbF9sZW5kZXJfcHJlcGF5bWVudF9wZW5hbHR5JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJU29mdCBDcmVkaXQgQ2hlY2s6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9zb2Z0X2NyZWRpdF9jaGVjaycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJPC9kaXY+CgkJPD9waHAgaWYgKCBnZXRfZmllbGQoICdwbF9sZW5kZXJfcmV2aWV3X3VybCcgKSApOiA/PgoJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXJldmlldyI+CgkJCQk8cCBjbGFzcz0ibGVuZGVyLXJldmlldy1oZWFkaW5nIj4KCQkJCQlSZXZpZXc6CgkJCQk8L3A+CgkJCQk8cD4KCQkJCQk8YSBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3BsX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBQZXJzb25hbCBMb2FuIFJldmlldzwvYT4KCQkJCTwvcD4KCQkJPC9kaXY+CgkJPD9waHAgZW5kaWY7ID8+Cgk8L2Rpdj4KPC9kaXY+Cjw/cGhwCgllY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+JzsKCSRsZW5kZXJfdmlld19kZXRhaWxzX2xpbmtfanNfdmFyID0gJ2xlbmRlcl92aWV3X2RldGFpbHNfbGlua18nIC4gZ2V0X3RoZV9pZCgpOwoJJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyID0gJ2xlbmRlcl9jb2xsYXBzaWJsZV9yb3dfJyAuIGdldF90aGVfaWQoKTsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLXZpZXctZGV0YWlscy1saW5rLScgLiBnZXRfdGhlX2lkKCkgLiAnIilbMF07JzsKCWVjaG8gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7JzsKCWVjaG8gJ3RoaXMuY2xhc3NMaXN0LnRvZ2dsZSgiYWN0aXZlIik7JzsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAnaWYgKCcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCkgeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gbnVsbDsnOwoJZWNobyAnfSBlbHNlIHsnOwoJZWNobyAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCA9ICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnNjcm9sbEhlaWdodCArICJweCI7JzsKCWVjaG8gJ30nOwoJZWNobyAnfSk7JzsKCWVjaG8gJzwvc2NyaXB0Pic7Cj8+

PD9waHAKCSRvdXRwdXQgPSAnJzsKCQoJJGFyZ3MgPSBhcnJheSgKICAgICAgICAncG9zdF90eXBlJyA9PiAncGxfbGVuZGVyJywKICAgICAgICAncG9zdHNfcGVyX3BhZ2UnID0+IC0xLAoJCSdtZXRhX3F1ZXJ5JyA9PiBhcnJheSgKCQkJCQkJCSdyZWxhdGlvbicgPT4gJ0FORCcsCgkJCQkJCQlhcnJheSgKCQkJCQkJCQkna2V5JyA9PiAncGxfbGVuZGVyX3Zpc2libGUnLAoJCQkJCQkJCSd2YWx1ZScgPT4gJzEnLAoJCQkJCQkJCSdjb21wYXJlJyA9PiAnPScsCgkJCQkJCQkpLAoJCQkJCQkJYXJyYXkoCgkJCQkJCQkJJ2tleScgPT4gJ3BsX2xlbmRlcl9kaXNjbG9zdXJlX3VybCcsCgkJCQkJCQkJJ2NvbXBhcmUnID0+ICdFWElTVFMnLAoJCQkJCQkJKSwKCQkJCQkJKSwKCQknbWV0YV9rZXknID0+ICdwbF9sZW5kZXJfcG9zaXRpb24nLAoJCSdvcmRlcmJ5JyA9PiAnbWV0YV92YWx1ZV9udW0nLAoJCSdvcmRlcicgPT4gJ0FTQycsCiAgICApOwoKCSRsb29wID0gbmV3IFdQX1F1ZXJ5KCAkYXJncyApOwoKCWlmICggJGxvb3AgLT4gaGF2ZV9wb3N0cygpICkgewoJCQoJCSRvdXRwdXQgPSAnRGlzY2xvc3VyZXM6ICc7CgkJCgkJd2hpbGUgKCAkbG9vcCAtPiBoYXZlX3Bvc3RzKCkgKSB7CgkJCQoJCQkkbG9vcCAtPiB0aGVfcG9zdCgpOwoJCQkKCQkJJG91dHB1dCAuPSAnPGEgaHJlZj0iJyAuIGdldF9maWVsZCggJ3BsX2xlbmRlcl9kaXNjbG9zdXJlX3VybCcgKSAuICciIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vZm9sbG93Ij4nIC4gZ2V0X3RoZV90aXRsZSgpIC4gJzwvYT4gfCAnOwoJCQkKCQl9CgkJCgl9CgoJd3BfcmVzZXRfcG9zdGRhdGEoKTsKCgkkb3V0cHV0ID0gc3Vic3RyKCAkb3V0cHV0LCAwLCBzdHJsZW4oICRvdXRwdXQgKSAtIDMgKTsKCgllY2hvICRvdXRwdXQ7Cj8+

Let's mentor your money

Get the latest personal finance advice delivered directly to your inbox.