This project aims to analyze the financial performances of Jack and his two children, Sara and Abe, by comparing their returns against the overall market.

Analysis

Jack’s Performance Over Time Line Graph

Sara’s Performance Over Time Line Graph

Abe’s Investment Performance Over Time

Combined Plot Year vs Return Difference

Mean Return Difference for Each Person

Sum of Return Difference for Each Person

Plot SP500 vs Individuals by Year

Plot Total Cash Earned by Each Person

Scatter plot Return v Person by Year

Conclusions

I’d say that this family has had great luck in the stock market. All three have made positive returns against the market.

To answer the question if he should have given an equal amount to each kid, I think so. Abe had a higher sum and average return return vs the market than Sara. However, I’m not too sure because Sara never really had bad years, so it just depends I feel like.

Considering their dad didn’t outperform the market since 1980, I’d say they’ve performed pretty decently compared to what he might have done. Both have made significant profits in their own style.

Jack always had subtle good years, not fluctuating much. However, once 1980 hit, he couldn’t seem to break positive. Abe only either had a great year or a terrible year. He won big or lost big, hardly any in betweens. Sara had a very strong year after 2010, but other than that, her return vs the market sat close to 0.

LS0tDQp0aXRsZTogIkhvbWV3b3JrIDQgU3VibWlzc2lvbiAtIE5vYWggU3RhY3kiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQojIyBUaGlzIHByb2plY3QgYWltcyB0byBhbmFseXplIHRoZSBmaW5hbmNpYWwgcGVyZm9ybWFuY2VzIG9mIEphY2sgYW5kIGhpcyB0d28gY2hpbGRyZW4sIFNhcmEgYW5kIEFiZSwgYnkgY29tcGFyaW5nIHRoZWlyIHJldHVybnMgYWdhaW5zdCB0aGUgb3ZlcmFsbCBtYXJrZXQuDQoNCmBgYHtyIGluY2x1ZGU9RkFMU0V9DQojTGlicmFyaWVzDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCg0KI0ltcG9ydCAzIGRhdGEgZmlsZXMNCmNhc2ggPC0gcmVhZC5jc3YoImNhc2guY3N2IikNClZpZXcoY2FzaCkNCg0KY29udHJpYnV0aW9ucyA8LSByZWFkLmNzdigiY29udHJpYnV0aW9ucy5jc3YiKQ0KVmlldyhjb250cmlidXRpb25zKQ0KDQpzcDUwMCA8LSByZWFkLmNzdigic3A1MDAuY3N2IikNClZpZXcoc3A1MDApDQoNCiNQdXQgaW50byB0aWJibGVzDQoNCiNDYXNoIHRpYmJsZQ0KdF9jYXNoIDwtIGFzX3RpYmJsZShjYXNoKQ0Kc3RyKHRfY2FzaCkNCg0KdF9jYXNoIDwtIHRfY2FzaCAlPiUgDQogIHJlbmFtZSgNCiAgICBjYXNoX3llYXIgPSBDYXNoLlllYXIsDQogICAgY2FzaF9zdGFydCA9IENhc2guU3RhcnQsDQogICAgZW5kX3llYXJfY2FzaCA9IEVuZC5vZi5ZZWFyLkNhc2gsDQogICAgcGVyc29uID0gUGVyc29uLg0KICApIA0KDQojVGhpcyBmaWx0ZXJzIG91dCB3aGVyZSBjZWxscywgbm90IHN1cmUgaWYgcmlnaHQNCnRfY2FzaCA8LSB0X2Nhc2ggJT4lIA0KICBmaWx0ZXIoIShwZXJzb24gPT0gIkphY2siIA0KICAgICAgICAgICAmIGNhc2hfeWVhciA+PSAyMDAwIA0KICAgICAgICAgICAmIGNhc2hfeWVhciA8PSAyMDA1ICkpDQoNCnRfY2FzaCA8LSB0X2Nhc2ggJT4lIA0KICBtdXRhdGUoZW5kX3llYXJfY2FzaCA9IGFzLm51bWVyaWMoZW5kX3llYXJfY2FzaCkpDQoNCg0KI0NvbnRyaWJ1dGlvbnMgdGliYmxlDQp0X2NvbnRyaWJ1dGlvbnMgPC0gYXNfdGliYmxlKGNvbnRyaWJ1dGlvbnMpDQpzdHIodF9jb250cmlidXRpb25zKQ0KDQp0X2NvbnRyaWJ1dGlvbnMgPC0gdF9jb250cmlidXRpb25zICU+JSANCiAgcmVuYW1lKA0KICAgIGNvbnRfY2FzaF95ZWFyID0gQ2FzaC5ZZWFyLA0KICAgIGNhc2hfYWRkZWRfZW5kX3llYXIgPSBDYXNoLkFkZGVkLmF0LkVuZC5vZi5ZZWFyLA0KICAgIHBlcnNvbl9hZGRpbmdfY2FzaCA9IFBlcnNvbi5BZGRpbmcuQ2FzaA0KICApIA0KDQp0X2NvbnRyaWJ1dGlvbnMgPC0gdF9jb250cmlidXRpb25zICU+JSANCiAgbXV0YXRlKGNhc2hfYWRkZWRfZW5kX3llYXIgPSBhcy5udW1lcmljKGNhc2hfYWRkZWRfZW5kX3llYXIpKQ0KICANCg0KI3NwNTAwIHRpYmJsZQ0KdF9zcDUwMCA8LSBhc190aWJibGUoc3A1MDApDQpzdHIodF9zcDUwMCkNCg0KdF9zcDUwMCA8LSB0X3NwNTAwICU+JSANCiAgcmVuYW1lKHNwX3Jvd19pZCA9IFNwNTAwLklELlJvdykNCg0KdF9zcDUwMCA8LSB0X3NwNTAwICU+JSANCiAgZmlsdGVyKHNwX3Jvd19pZCA8IDEyNCkNCg0KI0pvaW4gdGliYmxlcyBpbnRvIG9uZSB0aWJibGUNCg0KdF9jb21iaW5lZCA8LSB0X2Nhc2ggJT4lIA0KICBsZWZ0X2pvaW4odF9jb250cmlidXRpb25zLCBieSA9IGMoJ2Nhc2hfeWVhcicgPSAnY29udF9jYXNoX3llYXInLCAncGVyc29uJyA9ICdwZXJzb25fYWRkaW5nX2Nhc2gnKSkgJT4lIA0KICBsZWZ0X2pvaW4odF9zcDUwMCwgYnkgPSBjKCdjYXNoX3llYXInID0gJ3llYXInKSkgJT4lIA0KICBzZWxlY3QoLXNwX3Jvd19pZCkNCg0KI1JldHVybiB2cyBtYXJrZXQgZGlmZmVyZW5jZSBjb2x1bW4gDQp0X2NvbWJpbmVkIDwtIHRfY29tYmluZWQgJT4lIA0KICBtdXRhdGUoY2FzaF9lYXJuZWQgPSANCiAgICAgICAgICAgZW5kX3llYXJfY2FzaCAtIGNhc2hfYWRkZWRfZW5kX3llYXIgLSBjYXNoX3N0YXJ0KQ0KDQp0X2NvbWJpbmVkIDwtIHRfY29tYmluZWQgJT4lIA0KICBtdXRhdGUocGVyc29uX3JldHVybiA9IChjYXNoX2Vhcm5lZCAvIGNhc2hfc3RhcnQpKQ0KDQp0X2NvbWJpbmVkIDwtIHRfY29tYmluZWQgJT4lIA0KICBtdXRhdGUocmV0dXJuX3ZfbWFya2V0X2RpZmZlcmVuY2UgPSAocGVyc29uX3JldHVybiAtIG1hcmtldF9yZXR1cm4pKQ0KYGBgDQoNCiMgQW5hbHlzaXMNCg0KDQojIyMgSmFjaydzIFBlcmZvcm1hbmNlIE92ZXIgVGltZSBMaW5lIEdyYXBoDQpgYGB7ciBlY2hvPUZBTFNFfQ0KdF9qYWNrX2J5X3llYXIgPC0gdF9jb21iaW5lZCAlPiUgDQogIGZpbHRlcihwZXJzb24gPT0gIkphY2siKQ0KDQpnZ3Bsb3QoZGF0YSA9IHRfamFja19ieV95ZWFyKSArDQogIGdlb21fbGluZShtYXBwaW5nID0gYWVzKHggPSBjYXNoX3llYXIsIHkgPSByZXR1cm5fdl9tYXJrZXRfZGlmZmVyZW5jZSwgY29sb3IgPSBwZXJzb24pKSArDQogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsIGNvbG9yID0gInJlZCIpICsNCiAgZ2VvbV9saW5lKG1hcHBpbmcgPSBhZXMoeCA9IGNhc2hfeWVhciwgeSA9IG1hcmtldF9yZXR1cm4pKSArDQogIGxhYnModGl0bGUgPSAiSmFjaydzIEludmVzdG1lbnQgUGVyZm9ybWFuY2UgT3ZlciBUaW1lIiwNCiAgICAgICBjYXB0aW9uID0gIkhlIGRpZCB3b3JzZSB0aGFuIHRoZSBtYXJrZXQgcmV0dXJuIGV2ZXJ5IHllYXIgYWZ0ZXIgMTk4MCIpICsNCiAgeGxhYigiWWVhciIpICsNCiAgeWxhYigiUmV0dXJuIHZzIE1hcmtldCAoJSkiKQ0KYGBgDQojIyMgU2FyYSdzIFBlcmZvcm1hbmNlIE92ZXIgVGltZSBMaW5lIEdyYXBoDQpgYGB7ciBlY2hvPUZBTFNFfQ0KDQp0X3NhcmFfYnlfeWVhciA8LSB0X2NvbWJpbmVkICU+JSANCiAgZmlsdGVyKHBlcnNvbiA9PSAiU2FyYSIpDQoNCmdncGxvdChkYXRhID0gdF9zYXJhX2J5X3llYXIpICsNCiAgZ2VvbV9saW5lKG1hcHBpbmcgPSBhZXMoeCA9IGNhc2hfeWVhciwgeSA9IHJldHVybl92X21hcmtldF9kaWZmZXJlbmNlLCBjb2xvciA9IHBlcnNvbikpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgY29sb3IgPSAicmVkIikgKw0KICBnZW9tX2xpbmUobWFwcGluZyA9IGFlcyh4ID0gY2FzaF95ZWFyLCB5ID0gbWFya2V0X3JldHVybikpICsNCiAgbGFicyh0aXRsZSA9ICJTYXJhJ3MgSW52ZXN0bWVudCBQZXJmb3JtYW5jZSBPdmVyIFRpbWUiLA0KICAgICAgIGNhcHRpb24gPSAiU2hlIGhhZCBvbmUgdmVyeSBhbWF6aW5nIHllYXIgYWZ0ZXIgMjAxMCIpICsNCiAgeGxhYigiWWVhciIpICsNCiAgeWxhYigiUmV0dXJuIHZzIE1hcmtldCAoJSkiKQ0KDQpnZ3Bsb3QoZGF0YSA9IHRfc2FyYV9ieV95ZWFyKSArDQogIGdlb21fc21vb3RoKG1hcHBpbmcgPSBhZXMoeCA9IGNhc2hfeWVhciwgeSA9IHJldHVybl92X21hcmtldF9kaWZmZXJlbmNlLCBjb2xvciA9IHBlcnNvbikpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgY29sb3IgPSAicmVkIikgKw0KICBnZW9tX3Ntb290aChtYXBwaW5nID0gYWVzKHggPSBjYXNoX3llYXIsIHkgPSBtYXJrZXRfcmV0dXJuKSkgKw0KICBsYWJzKHRpdGxlID0gIlNhcmEncyBJbnZlc3RtZW50IFBlcmZvcm1hbmNlIE92ZXIgVGltZSIpICsNCiAgeGxhYigiWWVhciIpICsNCiAgeWxhYigiUmV0dXJuIHZzIE1hcmtldCAoJSkiKQ0KYGBgDQojIyMgQWJlJ3MgSW52ZXN0bWVudCBQZXJmb3JtYW5jZSBPdmVyIFRpbWUNCmBgYHtyIGVjaG89RkFMU0V9DQoNCnRfYWJlX2J5X3llYXIgPC0gdF9jb21iaW5lZCAlPiUgDQogIGZpbHRlcihwZXJzb24gPT0gIkFiZSIpDQoNCmdncGxvdChkYXRhID0gdF9hYmVfYnlfeWVhcikgKw0KICBnZW9tX2xpbmUobWFwcGluZyA9IGFlcyh4ID0gY2FzaF95ZWFyLCB5ID0gcmV0dXJuX3ZfbWFya2V0X2RpZmZlcmVuY2UsIGNvbG9yID0gcGVyc29uKSkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBjb2xvciA9ICJyZWQiKSArDQogIGdlb21fbGluZShtYXBwaW5nID0gYWVzKHggPSBjYXNoX3llYXIsIHkgPSBtYXJrZXRfcmV0dXJuKSkgKw0KICBsYWJzKHRpdGxlID0gIkFiZSdzIEludmVzdG1lbnQgUGVyZm9ybWFuY2UgT3ZlciBUaW1lIiwNCiAgICAgICBjYXB0aW9uID0gIkFiZSdzIHBlcmZvcm1hbmNlIGdyZWF0bHkgdmFyaWVkIHllYXIgYnkgeWVhciwgZWl0aGVyIGNydXNoaW5nIHRoZSBtYXJrZXQgcmV0dXJuIG9yIGZhbGxpbmcgd2VsbCBiZWxvdyIpICsNCiAgeGxhYigiWWVhciIpICsNCiAgeWxhYigiUmV0dXJuIHZzIE1hcmtldCAoJSkiKQ0KDQpnZ3Bsb3QoZGF0YSA9IHRfYWJlX2J5X3llYXIpICsNCiAgZ2VvbV9zbW9vdGgobWFwcGluZyA9IGFlcyh4ID0gY2FzaF95ZWFyLCB5ID0gcmV0dXJuX3ZfbWFya2V0X2RpZmZlcmVuY2UsIGNvbG9yID0gcGVyc29uKSkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBjb2xvciA9ICJyZWQiKSArDQogIGdlb21fc21vb3RoKG1hcHBpbmcgPSBhZXMoeCA9IGNhc2hfeWVhciwgeSA9IG1hcmtldF9yZXR1cm4pKSArDQogIGxhYnModGl0bGUgPSAiQWJlJ3MgSW52ZXN0bWVudCBQZXJmb3JtYW5jZSBPdmVyIFRpbWUiKSArDQogIHhsYWIoIlllYXIiKSArDQogIHlsYWIoIlJldHVybiB2cyBNYXJrZXQgKCUpIikNCmBgYA0KIyMjIENvbWJpbmVkIFBsb3QgWWVhciB2cyBSZXR1cm4gRGlmZmVyZW5jZQ0KYGBge3IgZWNobz1GQUxTRX0NCg0KZ2dwbG90KGRhdGEgPSB0X2NvbWJpbmVkKSArDQogIGdlb21fbGluZShtYXBwaW5nID0gYWVzKHggPSBjYXNoX3llYXIsIHkgPSByZXR1cm5fdl9tYXJrZXRfZGlmZmVyZW5jZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgPSBwZXJzb24pKSArDQogIGxhYnModGl0bGUgPSAiSW52ZXN0bWVudCBQZXJmb3JtYW5jZSBDb21wYXJpc29uIE92ZXIgVGltZSIpICsNCiAgeGxhYigiWWVhciIpICsNCiAgeWxhYigiUmV0dXJuIERpZmZlcmVuY2UgdnMgTWFya2V0ICglKSIpDQoNCmdncGxvdChkYXRhID0gdF9jb21iaW5lZCkgKw0KICBnZW9tX3Ntb290aChtYXBwaW5nID0gYWVzKHggPSBjYXNoX3llYXIsIHkgPSByZXR1cm5fdl9tYXJrZXRfZGlmZmVyZW5jZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgPSBwZXJzb24pKSArDQogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsIGNvbG9yID0gInJlZCIpICsNCiAgbGFicyh0aXRsZSA9ICJJbnZlc3RtZW50IFBlcmZvcm1hbmNlIENvbXBhcmlzb24gT3ZlciBUaW1lIikgKw0KICB4bGFiKCJZZWFyIikgKw0KICB5bGFiKCJSZXR1cm4gRGlmZmVyZW5jZSB2cyBNYXJrZXQgKCUpIikNCg0KYGBgDQojIyMgTWVhbiBSZXR1cm4gRGlmZmVyZW5jZSBmb3IgRWFjaCBQZXJzb24NCmBgYHtyIGVjaG89RkFMU0V9DQoNCm1lYW5fZGlmZiA8LSB0X2NvbWJpbmVkICU+JSANCiAgZ3JvdXBfYnkocGVyc29uKSAlPiUgDQogIHN1bW1hcml6ZShtZWFuX2RpZmYgPSBtZWFuKHJldHVybl92X21hcmtldF9kaWZmZXJlbmNlKSkNCg0KDQpnZ3Bsb3QoZGF0YSA9IG1lYW5fZGlmZikgKw0KICBnZW9tX2JhcihtYXBwaW5nID0gYWVzKHggPSBwZXJzb24sIHkgPSBtZWFuX2RpZmYsDQogICAgICAgICAgICAgICAgICAgICAgICAgZmlsbCA9IHBlcnNvbiksDQogICAgICAgICAgIHN0YXQgPSAiaWRlbnRpdHkiKSArDQogIGxhYnModGl0bGUgPSAiTWVhbiBSZXR1cm4gdnMgTWFya2V0IERpZmZlcmVuY2UgYnkgUGVyc29uIikgKw0KICB4bGFiKCJQZXJzb24iKSArDQogIHlsYWIoIk1lYW4gRGlmZmVyZW5jZSB2cyBNYXJrZXQgKCUpIikNCg0KYGBgDQojIyMgU3VtIG9mIFJldHVybiBEaWZmZXJlbmNlIGZvciBFYWNoIFBlcnNvbg0KYGBge3IgZWNobz1GQUxTRX0NCg0Kc3VtX2RpZmYgPC0gdF9jb21iaW5lZCAlPiUgDQogIGdyb3VwX2J5KHBlcnNvbikgJT4lIA0KICBzdW1tYXJpemUoc3VtX2RpZmYgPSBzdW0ocmV0dXJuX3ZfbWFya2V0X2RpZmZlcmVuY2UpKQ0KDQoNCmdncGxvdChkYXRhID0gc3VtX2RpZmYpICsNCiAgZ2VvbV9iYXIobWFwcGluZyA9IGFlcyh4ID0gcGVyc29uLCB5ID0gc3VtX2RpZmYsDQogICAgICAgICAgICAgICAgICAgICAgICAgZmlsbCA9IHBlcnNvbiksDQogICAgICAgICAgIHN0YXQgPSAiaWRlbnRpdHkiKSArDQogIGxhYnModGl0bGUgPSAiU3VtIFJldHVybiB2cyBNYXJrZXQgRGlmZmVyZW5jZSBieSBQZXJzb24iKSArDQogIHhsYWIoIlBlcnNvbiIpICsNCiAgeWxhYigiU3VtIG9mIERpZmZlcmVuY2UgdnMgTWFya2V0ICglKSIpDQoNCmBgYA0KIyMjIFBsb3QgU1A1MDAgdnMgSW5kaXZpZHVhbHMgYnkgWWVhcg0KYGBge3IgZWNobz1GQUxTRX0NCg0KZ2dwbG90KGRhdGEgPSB0X2NvbWJpbmVkKSArDQogIGdlb21fbGluZShtYXBwaW5nID0gYWVzKHggPSBjYXNoX3llYXIsIHkgPSBtYXJrZXRfcmV0dXJuKSkgKw0KICBnZW9tX2xpbmUobWFwcGluZyA9IGFlcyh4ID0gY2FzaF95ZWFyLCB5ID0gcmV0dXJuX3ZfbWFya2V0X2RpZmZlcmVuY2UsDQogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gcGVyc29uKSkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBjb2xvciA9ICJyZWQiKSArDQogIGZhY2V0X3dyYXAofnBlcnNvbiwgbmNvbCA9IDEpICsNCiAgbGFicyh0aXRsZSA9ICJTJlA1MDAgdnMgSW5kaXZpZHVhbHMgUGVyZm9ybWFuY2UgT3ZlciBUaW1lIikgKw0KICB4bGFiKCJZZWFyIikgKw0KICB5bGFiKCJSZXR1cm4gdnMgTWFya2V0ICglKSIpDQoNCg0KYGBgDQojIyMgUGxvdCBUb3RhbCBDYXNoIEVhcm5lZCBieSBFYWNoIFBlcnNvbg0KYGBge3IgZWNobz1GQUxTRX0NCg0KdG90YWxfZWFybmluZ3MgPC0gdF9jb21iaW5lZCAlPiUgDQogIGdyb3VwX2J5KHBlcnNvbikgJT4lIA0KICBzdW1tYXJpemUodG90YWxfZWFybmVkID0gc3VtKGVuZF95ZWFyX2Nhc2ggLSBjYXNoX2FkZGVkX2VuZF95ZWFyIC0gY2FzaF9zdGFydCkpDQoNCmdncGxvdChkYXRhID0gdG90YWxfZWFybmluZ3MpICsNCiAgZ2VvbV9iYXIobWFwcGluZyA9IGFlcyh4ID0gcGVyc29uLCB5ID0gdG90YWxfZWFybmVkLA0KICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGwgPSBwZXJzb24pLA0KICAgICAgICAgICBzdGF0ID0gImlkZW50aXR5IikgKw0KICBsYWJzKHRpdGxlID0gIlRvdGFsIENhc2ggRWFybmVkIEJ5IFBlcnNvbiIpICsNCiAgeGxhYigiUGVyc29uIikgKw0KICB5bGFiKCJUb3RhbCBDYXNoIEVhcm5lZCAoJCkiKQ0KDQpgYGANCiMjIyBTY2F0dGVyIHBsb3QgUmV0dXJuIHYgUGVyc29uIGJ5IFllYXINCmBgYHtyIGVjaG89RkFMU0V9DQoNCmdncGxvdChkYXRhID0gdF9jb21iaW5lZCkgKw0KICBnZW9tX3BvaW50KG1hcHBpbmcgPSBhZXMoeCA9IGNhc2hfeWVhciwgeSA9IHJldHVybl92X21hcmtldF9kaWZmZXJlbmNlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgPSBwZXJzb24pKSArDQogIGdlb21fc21vb3RoKG1hcHBpbmcgPSBhZXMoeCA9IGNhc2hfeWVhciwgeSA9IG1hcmtldF9yZXR1cm4pKSArDQogIGxhYnModGl0bGUgPSAiUmV0dXJuIHZzIE1hcmtldCBSZXR1cm4gYnkgWWVhciIpICsNCiAgeGxhYigiWWVhciIpICsNCiAgeWxhYigiUmV0dXJuIHZzIE1hcmtldCAoJSkiKQ0KYGBgDQoNCiMgQ29uY2x1c2lvbnMgDQpJJ2Qgc2F5IHRoYXQgdGhpcyBmYW1pbHkgaGFzIGhhZCBncmVhdCBsdWNrIGluIHRoZSBzdG9jayBtYXJrZXQuIEFsbCB0aHJlZSBoYXZlIG1hZGUgcG9zaXRpdmUgcmV0dXJucyBhZ2FpbnN0IHRoZSBtYXJrZXQuIA0KDQpUbyBhbnN3ZXIgdGhlIHF1ZXN0aW9uIGlmIGhlIHNob3VsZCBoYXZlIGdpdmVuIGFuIGVxdWFsIGFtb3VudCB0byBlYWNoIGtpZCwgSSB0aGluayBzby4gQWJlIGhhZCBhIGhpZ2hlciBzdW0gYW5kIGF2ZXJhZ2UgcmV0dXJuIHJldHVybiB2cyB0aGUgbWFya2V0IHRoYW4gU2FyYS4gSG93ZXZlciwgSSdtIG5vdCB0b28gc3VyZSBiZWNhdXNlIFNhcmEgbmV2ZXIgcmVhbGx5IGhhZCBiYWQgeWVhcnMsIHNvIGl0IGp1c3QgZGVwZW5kcyBJIGZlZWwgbGlrZS4NCg0KDQpDb25zaWRlcmluZyB0aGVpciBkYWQgZGlkbid0IG91dHBlcmZvcm0gdGhlIG1hcmtldCBzaW5jZSAxOTgwLCBJJ2Qgc2F5IHRoZXkndmUgcGVyZm9ybWVkIHByZXR0eSBkZWNlbnRseSBjb21wYXJlZCB0byB3aGF0IGhlIG1pZ2h0IGhhdmUgZG9uZS4gQm90aCBoYXZlIG1hZGUgc2lnbmlmaWNhbnQgcHJvZml0cyBpbiB0aGVpciBvd24gc3R5bGUuDQoNCkphY2sgYWx3YXlzIGhhZCBzdWJ0bGUgZ29vZCB5ZWFycywgbm90IGZsdWN0dWF0aW5nIG11Y2guIEhvd2V2ZXIsIG9uY2UgMTk4MCBoaXQsIGhlIGNvdWxkbid0IHNlZW0gdG8gYnJlYWsgcG9zaXRpdmUuIEFiZSBvbmx5IGVpdGhlciBoYWQgYSBncmVhdCB5ZWFyIG9yIGEgdGVycmlibGUgeWVhci4gSGUgd29uIGJpZyBvciBsb3N0IGJpZywgaGFyZGx5IGFueSBpbiBiZXR3ZWVucy4gU2FyYSBoYWQgYSB2ZXJ5IHN0cm9uZyB5ZWFyIGFmdGVyIDIwMTAsIGJ1dCBvdGhlciB0aGFuIHRoYXQsIGhlciByZXR1cm4gdnMgdGhlIG1hcmtldCBzYXQgY2xvc2UgdG8gMC4NCg==