diff --git a/01/assets/javascripts/application.min.js b/01/assets/javascripts/application.min.js
new file mode 100644
index 00000000..1254ab72
--- /dev/null
+++ b/01/assets/javascripts/application.min.js
@@ -0,0 +1 @@
+$("a[jump-to-tab]").on("click",function(){var t,a;t=$(this).attr("jump-to-tab"),$("#"+t).click(),a=$($(this).attr("target")),$("body,html").animate({scrollTop:a.offset().top},400,"swing")});
\ No newline at end of file
diff --git a/01/assets/stylesheets/application.min.css b/01/assets/stylesheets/application.min.css
new file mode 100644
index 00000000..34adf9b8
--- /dev/null
+++ b/01/assets/stylesheets/application.min.css
@@ -0,0 +1 @@
+.bd-footer,.bd-masthead{background-repeat:repeat;background-position:top left;background-attachment:scroll;position:relative}.subtitle,.title{letter-spacing:5px}.bd-footer,.bd-masthead,.timeline{position:relative}.bd-masthead{padding:5rem 0;text-align:center}.bd-footer{padding:3rem 0;text-align:left}.pr-05,.px-05{padding-right:.5rem!important}.pl-05,.px-05{padding-left:.5rem!important}.pt-05,.py-05{padding-top:.5rem!important}.pb-05,.py-05{padding-bottom:.5rem!important}.nav-item{width:25%;text-align:center}.tab-content{border:1px solid transparent;border-color:#fff #ddd #ddd;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}a{color:#5cabce}a.presenter{color:#fff}.title,a:hover{color:#0079ab}a.jump:hover{cursor:pointer}.title{margin-bottom:.5rem}.subtitle{color:#b7ddf1;font-size:.8rem}.description{line-height:1.8em}.separator{border-top:1px solid #b7ddf1;width:75%;margin:0 auto}.mr-05,.mx-05{margin-right:.5rem!important}.ml-05,.mx-05{margin-left:.5rem!important}.mt-05,.my-05{margin-top:.5rem!important}.mb-05,.my-05{margin-bottom:.5rem!important}.info{color:#f44}.ma-05{margin:.5rem!important}.pa-05{padding:.5rem!important}.timeline{margin:38px 20px 30px;padding:0;list-style:none}.timeline:before{content:'';position:absolute;top:0;bottom:0;width:10px;background:#b7ddf1;left:20%;margin-left:-10px}.timeline>li{position:relative}.timeline>li .timeline_time{display:block;width:25%;padding-right:100px;position:absolute}.timeline>li .timeline_time span{display:block;text-align:right}.timeline>li .timeline_time span:first-child{color:#5cabce}.timeline>li .timeline_time span:last-child{font-size:2em;color:#0079ab}.timeline>li .timeline_label{margin:0 20px 20px 25%;background:#5cabce;color:#fff;padding:1.5em;position:relative;border-radius:5px}.timeline>li .timeline_label h4{margin-top:0;padding:0 0 10px;border-bottom:1px solid rgba(255,255,255,.4)}.timeline>li .timeline_label p{margin-bottom:0}.timeline>li .timeline_label:after{right:100%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#5cabce;border-width:10px;top:10px}.timeline>li .timeline_icon{width:40px;height:40px;font-size:1.4em;line-height:40px;position:absolute;color:#fff;background:#0079ab;border-radius:50%;box-shadow:0 0 0 8px #b7ddf1;text-align:center;left:20%;top:0;margin:0 0 0 -25px}@media screen and (max-width:767px){.timeline:before{display:none}.timeline>li .timeline_time{width:100%;position:relative;padding:0 0 20px}.timeline>li .timeline_time span{text-align:left}.timeline>li .timeline_label{margin:0 0 30px;padding:1em;font-weight:400;font-size:95%}.timeline>li .timeline_label:after{right:auto;left:20px;border-right-color:transparent;border-bottom-color:#5cabce;top:-20px}.timeline>li .timeline_icon{position:relative;float:right;left:auto;margin:-55px 5px 0 0}}@media screen and (max-width:991px){ul.timeline{margin:10px}.timeline>li .timeline_label.row{padding:10px}.timeline>li .timeline_label>.col-sm{padding:10px 5px}}img.photo{margin:5px;width:100%;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px}.timeline>li a.external-link{color:#ff6;text-decoration:underline}.timeline>li a.external-link:visited{color:#dbdb00}.timeline>li a.external-link:active,.timeline>li a.external-link:focus,.timeline>li a.external-link:hover{color:olive;background:#ff6}
\ No newline at end of file
diff --git a/01/conference.html b/01/conference.html
new file mode 100644
index 00000000..e21dc6d5
--- /dev/null
+++ b/01/conference.html
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+
+
+
+
+ 発表資料1 発表資料2(非掲載)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TechConf開催日のころにはDocker 1.13がリリースされている見込みです. また,新ランタイムcontainerdのコミュニティ移管や,分散ストレージInfinitのソースコード公開も2017年の早期に予定されています.こうした近況をお伝えするほか,Dockerへのパッチの投げ方,バグレポートの仕方もご案内します.
+
+
須田瑛大(
@_AkihiroSuda_ ) - 日本電信電話株式会社
Dockerメンテナ@SIC
発表資料
+
+
+
+
+
+
+
+
+
+
+
+
+ Docker containers uses various OS primitives like cgroup, namespace and secomp, SElinux etc for isolating and securing containers. By default docker containers may not be secure enough to run at your server. This talk will help to understand the security concerns in containers and how it can be avoided.
+
+
Kunal Kushwaha(
@kunalkushwaha ) - 日本電信電話株式会社
Kunal works for NTT OSSC for Linux Containers community projects. He is also co-organizer of Docker Tokyo Meetups and gives talk in Container related events at Tokyo.
発表資料
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Apache Hadoopが登場して10年が経ち、今や分散処理技術として重要なものになりました。Hadoopによって大量データの蓄積や分散処理による高速化の恩恵を受けてきました。そして、単純なログ集計から分析・機械学習といったより高度な活用を推進しています。高度な利用ではApache Sparkが欠かせない技術です。Sparkを利用することで、分析や機械学習を容易に扱えるようになり、これまで結果を得るために必要だった時間を大幅に削減することができるようになりました。本セッションでは、HadoopやSparkを利用する上での基礎的な仕組み、抑えておくべきポイントといった本当のところをお伝えします!
+
+
鯵坂明(
@ajis_ka ) - NTTデータ
Akira Ajisaka is a software engineer working at NTT DATA, Japan. He belongs to OSS Professional Services team and deploys and operates Hadoop clusters for customers. He sometimes troubleshoots them by investigating source code and creating a patch. He is an Apache Hadoop committer/PMC member and he involves in various components of Hadoop for improving usability and supportability. He wrote blog posts about activities of the development of Apache Hadoop annually.
+
+
+
+
+
+
+
+
+
+
+
+
+ Hadoop やその周辺プロダクトを試してみたい人や、手っ取り早く動作確認するための環境が欲しい人向けに、Apache Bigtop を使って Docker コンテナ上に Hadoop ソフトウェアスタックを簡単に構築する方法を紹介します。以下の記事±αの内容を話します。
+
+
http://qiita.com/sekikn/items/18954e9b302c38eb5b55 関堅吾(
@sekikn39 ) - NTTデータ
OSS プロフェッショナルサービスという担当で Apache Hadoop のサポート業務に従事. Apache Yetus committer & PMC member.
+
+
+
+
+
+
+
+
+
+
+
+
+ 「Serverless」と「Blockchain」が注目されています.これらのテクノロジーを分解すると,その技術要素は多くの共通項を持ちます.コンテナ.分散.イベントドリブン.トランザクション.ワークフロー etc... ServerlessとBlockchainを分解し,組み合わせることで見えてくる新しい地平は何か.そして作成したデモシステムについてご紹介します. 林田貴宏 - NTTコムウェア 技術開発部門スペシャリスト.クラウドサービスやテストツール開発,Scrum,LeSSの取り組みを経て,現在Serverless分野に注力. 発表資料
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NTTドコモのビッグデータ分析環境"IDAP"は、AWSの各種サービスを利用して内製で開発されています。 そこに至るまでの経緯と開発運用のスタイルについて紹介します。
+
+
伊吹勇郎 - NTTドコモ
NTTドコモサービスイノベーションビッグデータ担当所属。入社以来データ分析およびデータ分析環境の構築に従事。
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/01/for-beginners.html b/01/for-beginners.html
new file mode 100644
index 00000000..5a9f644c
--- /dev/null
+++ b/01/for-beginners.html
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+
+
+
+
+ PostgreSQL 10 will be released sometime later this year. Beside the change in the policy of version numbering, there are number of significant features in the pipeline. As a development community member, I would like to highlight some of those features that have a good chance of being a part of this release - such as many new replication features, declarative partitioning, more FDW query push-down, enhanced parallelism and asynchronous execution capabilities, better statistics for query optimization, JIT-compiled expression evaluation, and many others.
+
+ Most of the anticipated features in PostgreSQL 10 have been consistently requested by the wider developer community using PostgreSQL and their availability opens up the possibility of even widespread adoption of PostgreSQL. 発表資料 Amit Langote(@amitlan ) - NTT OSSセンタ PostgreSQL developer
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 国際的なセキュリティ標準である PCI DSS をベースに、データベースのセキュリティに関して、どのような観点での検討が必要なのかを考えます。これからセキュリティっぽいことを考えなければいけない皆様の一助となれば幸いです。
+ なお、 発表は入門的な内容ですが、当方はセキュリティの専門家ではないので、詳しい方々からの優しいアドバイスを頂きたいと思っています。セキュリティに関して一家言ある皆様のご参加もお待ちしております。 発表資料 大山真実(@ooyamams1987 ) - NTT OSSセンタ 2012年NTTデータ入社。OSSプロフェッショナルサービス配属。HadoopなどのOSS製品の検証・サポート業務を担当。2015年からNTT OSSセンタにてPostgreSQLの検証・サポート業務を担当中。
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 「PostgreSQL 10: What to look for?」「Database Security for PCIDSS」に関する疑問質問、PostgreSQLやその他データベースに関する疑問質問をきっかけにみんなでディスカッションしようという時間です。おやつタイムも兼ねてます。様々なバックグラウンドを持つ技術者が集まる良い機会ですので、お気軽にご参加、ご発言ください! 藤井雅雄(@fujii_masao ) - NTTデータ PostgreSQL committer Amit Langote(@amitlan ) - NTT OSSセンタ PostgreSQL developer 大山真実(@ooyamams1987 ) - NTT OSSセンタ 2012年NTTデータ入社。OSSプロフェッショナルサービス配属。HadoopなどのOSS製品の検証・サポート業務を担当。2015年からNTT OSSセンタにてPostgreSQLの検証・サポート業務を担当中。 澤田雅彦(@sawada_masahiko ) - NTT OSSセンタ PostgreSQL技術サポートを行う傍ら、PostgreSQL開発者としてPostgreSQLコミュニティに参画し、PostgreSQL本体の開発にも従事。
+
+
+
+
+
+
+
+
+
+
+
+
+
+ シェル芸とは、IT環境における各種計算・統計・テキスト処理等の課題解決に際し、1からプログラムを書き起こすのではなく、UNIX哲学に基づき、広く普及している既存コマンドの組み合わせによって、シェル上のワンライナーで即座に課題を解決してしまうテクニックのことです。
+ 昨今 DevOps が話題になっていますが、オフィスの空調・椅子・キーボード・エディタ・ネットワーク接続に恵まれたDev(プログラマ)に対し、客先のデータセンタで寒さに震え、椅子もなく、キーボードも固く、エディタも選べず、時にオフラインでの作業を強いられるOps(インフラエンジニア)にとって、イザという時に頼れるのは己の知恵と勇気とcoreutilsだけという場面も珍しくありません。
+ このセッションでは、Software Design 2017年1月号に掲載されたシェル芸特集を題材に、明日から実践できるシェル芸の基礎をハンズオン形式で体感していただきます。 発表資料 石井久治(@hisaharu ) - 日本電信電話株式会社 NTT SICにてDevOpsの普及啓蒙と実践を推進。日本唯一のシェルプログラミングコミュニティ「USP友の会」幹事
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NTTソフトウェア社内の新規ビジネス開拓制度(戦略ビジネス特区)で、今冬トライアルが開始されるWebサービスをAWS上に構築しました。
+ EC2 Container Service (ECS)とSpotFleetを中心とした構成で、限られた時間の中でAWSの各種マネージドサービスも利用しましたので、その経験から得られたノウハウを、新規ビジネス開拓制度のご紹介も交えながら共有します。 須藤悠 - NTTソフトウェア ソフトウェア生産技術センター Grails推進室 "Grails Advocate" / ソフト道場 AWSチーム。技術研修の講師や、社内の「困った」に対する技術支援をしています。だいたいピザとGrailsとAWSで生きています。 発表資料
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ここ最近、いろいろな業界で話題になってきたブロックチェーン。
+ 暗号、P2P、分散合意など面白い話題てんこ盛りなブロックチェーンについて、今回は、よく知らない人向けの入門的なお話をします。
+ ご存知 Bitcoin を題材にしてブロックチェーンの仕組みを解説した後、昨今つぎつぎと登場する新たなブロックチェーン技術の動向についても簡単に説明します。 発表資料 北條真史 - NTTデータ ブロックチェーン技術のインフラ/ミドルレイヤを見てます。
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NTTグループ内では、内製化やアジャイル開発の流れを受けて、Slackなどのチャットが利用されるようになりました。チャットのあるところにBotあり。ということで、各社の現場で使われているBotや、行なわれているChatOpsの事例を紹介します。その後、Botの開発で困ったこと、ChatOpsで上手くいった/いかなかったこと、こんなことをやりたいなどのディスカッションを行います。 発表資料1 発表資料2 堀内晨彦(@hico_horiuchi ) - NTTコミュニケーションズ Enterprise Cloud 2.0のベアメタルの開発をしています。うどん大修士卒で研究はクラウドWeb鯖の負荷監視とオートスケールアルゴリズム。バイトでRailsとReact。JANOGスタッフ、Sensu TalksとHubot×ChatOps勉強会主催。Docker、Emacs、Golang、Itamae好き。
+
+
+
+
+
+
diff --git a/01/images/favicon.png b/01/images/favicon.png
new file mode 100644
index 00000000..f5af657b
Binary files /dev/null and b/01/images/favicon.png differ
diff --git a/01/images/graphy.png b/01/images/graphy.png
new file mode 100644
index 00000000..38faf5ac
Binary files /dev/null and b/01/images/graphy.png differ
diff --git a/01/images/ntt-tech-logo.png b/01/images/ntt-tech-logo.png
new file mode 100644
index 00000000..f82fb956
Binary files /dev/null and b/01/images/ntt-tech-logo.png differ
diff --git a/01/images/photos/301_1.jpg b/01/images/photos/301_1.jpg
new file mode 100644
index 00000000..83ed1275
Binary files /dev/null and b/01/images/photos/301_1.jpg differ
diff --git a/01/images/photos/301_2.jpg b/01/images/photos/301_2.jpg
new file mode 100644
index 00000000..68fa2a51
Binary files /dev/null and b/01/images/photos/301_2.jpg differ
diff --git a/01/images/photos/301_3.jpg b/01/images/photos/301_3.jpg
new file mode 100644
index 00000000..a9f34ad0
Binary files /dev/null and b/01/images/photos/301_3.jpg differ
diff --git a/01/images/photos/301_4.jpg b/01/images/photos/301_4.jpg
new file mode 100644
index 00000000..811c8889
Binary files /dev/null and b/01/images/photos/301_4.jpg differ
diff --git a/01/images/photos/301_5.jpg b/01/images/photos/301_5.jpg
new file mode 100644
index 00000000..9e62b243
Binary files /dev/null and b/01/images/photos/301_5.jpg differ
diff --git a/01/images/photos/301_7.jpg b/01/images/photos/301_7.jpg
new file mode 100644
index 00000000..d0624d06
Binary files /dev/null and b/01/images/photos/301_7.jpg differ
diff --git a/01/images/photos/301_8.jpg b/01/images/photos/301_8.jpg
new file mode 100644
index 00000000..efc5ab48
Binary files /dev/null and b/01/images/photos/301_8.jpg differ
diff --git a/01/images/photos/301_9.jpg b/01/images/photos/301_9.jpg
new file mode 100644
index 00000000..aaacc46a
Binary files /dev/null and b/01/images/photos/301_9.jpg differ
diff --git a/01/images/photos/302_2.jpg b/01/images/photos/302_2.jpg
new file mode 100644
index 00000000..8095b2aa
Binary files /dev/null and b/01/images/photos/302_2.jpg differ
diff --git a/01/images/photos/302_3.jpg b/01/images/photos/302_3.jpg
new file mode 100644
index 00000000..379192f1
Binary files /dev/null and b/01/images/photos/302_3.jpg differ
diff --git a/01/images/photos/302_4.jpg b/01/images/photos/302_4.jpg
new file mode 100644
index 00000000..3f688d5b
Binary files /dev/null and b/01/images/photos/302_4.jpg differ
diff --git a/01/images/photos/302_5.jpg b/01/images/photos/302_5.jpg
new file mode 100644
index 00000000..75066e1b
Binary files /dev/null and b/01/images/photos/302_5.jpg differ
diff --git a/01/images/photos/302_6.jpg b/01/images/photos/302_6.jpg
new file mode 100644
index 00000000..434a8bb5
Binary files /dev/null and b/01/images/photos/302_6.jpg differ
diff --git a/01/images/photos/302_7.jpg b/01/images/photos/302_7.jpg
new file mode 100644
index 00000000..53872b73
Binary files /dev/null and b/01/images/photos/302_7.jpg differ
diff --git a/01/images/photos/302_8.jpg b/01/images/photos/302_8.jpg
new file mode 100644
index 00000000..ace5852b
Binary files /dev/null and b/01/images/photos/302_8.jpg differ
diff --git a/01/images/photos/401_2.jpg b/01/images/photos/401_2.jpg
new file mode 100644
index 00000000..886af09c
Binary files /dev/null and b/01/images/photos/401_2.jpg differ
diff --git a/01/images/photos/401_3.jpg b/01/images/photos/401_3.jpg
new file mode 100644
index 00000000..d606ca6c
Binary files /dev/null and b/01/images/photos/401_3.jpg differ
diff --git a/01/images/photos/401_4.jpg b/01/images/photos/401_4.jpg
new file mode 100644
index 00000000..36170293
Binary files /dev/null and b/01/images/photos/401_4.jpg differ
diff --git a/01/images/photos/401_5.jpg b/01/images/photos/401_5.jpg
new file mode 100644
index 00000000..72798954
Binary files /dev/null and b/01/images/photos/401_5.jpg differ
diff --git a/01/images/photos/401_6.jpg b/01/images/photos/401_6.jpg
new file mode 100644
index 00000000..93444aa1
Binary files /dev/null and b/01/images/photos/401_6.jpg differ
diff --git a/01/images/photos/401_7.jpg b/01/images/photos/401_7.jpg
new file mode 100644
index 00000000..ae276802
Binary files /dev/null and b/01/images/photos/401_7.jpg differ
diff --git a/01/images/photos/401_8.jpg b/01/images/photos/401_8.jpg
new file mode 100644
index 00000000..c58801d9
Binary files /dev/null and b/01/images/photos/401_8.jpg differ
diff --git a/01/images/photos/sc_1.jpg b/01/images/photos/sc_1.jpg
new file mode 100644
index 00000000..f5a23c08
Binary files /dev/null and b/01/images/photos/sc_1.jpg differ
diff --git a/01/images/photos/sc_2.jpg b/01/images/photos/sc_2.jpg
new file mode 100644
index 00000000..4090ea67
Binary files /dev/null and b/01/images/photos/sc_2.jpg differ
diff --git a/01/images/photos/sc_3.jpg b/01/images/photos/sc_3.jpg
new file mode 100644
index 00000000..cc6b5ad7
Binary files /dev/null and b/01/images/photos/sc_3.jpg differ
diff --git a/01/images/photos/sc_4.jpg b/01/images/photos/sc_4.jpg
new file mode 100644
index 00000000..63098220
Binary files /dev/null and b/01/images/photos/sc_4.jpg differ
diff --git a/01/images/photos/sc_5.jpg b/01/images/photos/sc_5.jpg
new file mode 100644
index 00000000..46932b23
Binary files /dev/null and b/01/images/photos/sc_5.jpg differ
diff --git a/01/index.html b/01/index.html
new file mode 100644
index 00000000..3f8115ff
--- /dev/null
+++ b/01/index.html
@@ -0,0 +1,953 @@
+
+
+
+ NTT Tech Conference #01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 【2017.2.6更新】 本イベントは終了しました。多数のご来場ありがとうございました。 発表資料と写真を公開いたしました。
+
+
+
+
+
+ 総監督ごあいさつ
+
+ Thank You Messages
+
+
+
+
+ 講演いただいた皆様、ご参加いただいた皆様、そしてスタッフの皆様への御礼を申し上げます。 また、今回、直前でインフルエンザ等で参加を断念した方がいらっしゃいましたが、その方々にも、無事開催できたことを感謝しております。 今回、NTTグループ横断で有志が集まってワイワイと手作りしましたので、もし不手際などございましたら、アンケート等で忌憚のないご意見、コメントをいただければ幸いです。 今回のイベントはソフトウェア開発者を中心に据えたイベントです。 キーノートスピーチでNTTコミュニケーションズの技術開発部長 山下からも言及させていただきましたが、NTTグループ横断で技術者たちが集まるイベントは他にもありますが、現場のソフトウェア開発者、ソフトウェア技術に関わる人を対象とした、初めてのイベントです。 今、ソフトウェア、或いはSoftware Defined * と呼ばれるものが、ユーザだけでなく、企業や社会の様相まで変えてしまう流れがきています。それほどにソフトウェアの重要性が高まっています。 プラットフォーム事業者にも、エコシステムとスピードが求められている時代になり、既に種々のソフトウェアのプラットフォームが整備され、エコシステムが構築され、様々なプレイヤーが従来よりも比較にならない速度で多様なサービスを展開しています。 翻ってNTTグループでは、今でこそオープンソースのコミッター就任をニュースリリースしておりますが、冬の時代がありました。NWのIP系の人は昔からオープンに交流していましたが、ソフト系の人はNTTグループが背負ってきた様々な要因から、業務としてなかなか認められない時代がありました。しかし今やオープンソースが会社の重要な戦略の中に位置づけられてきています。 そして今後はグループ内外とのコラボが大事な時代になります。 NTTグループとしても、このようなイベント含めた様々な活動を通して、より積極的にグループ内外とのコラボレーション、特にビジネスのコラボレーションを進めていくことが、今後非常に重要になると考えています。 ご参加いただいた皆様は時代の流れの中核を担っていくエンジニアとして、このような場を発表や議論による知識の共有や仲間・人脈作りに大いに活用していただき、ステップアップしていただければと思います。また、今後とも、ライト、オープン、スピードとコラボレーションを心がけてイベントを企画していきますので、ぜひご参加いただければと思います。
+
+
+
+
+
+
+
+ NTT Tech Conferenceについて
+
+ ABOUT
+
+
+
+
+ NTT Tech Conferenceは、NTTグループのソフトウェアエンジニアたちが一堂に会し、NTTグループ内外のエンジニアたちと技術交流を行うためのカンファレンスです。NTTグループ内には各種OSSのコミッタ、メンテナ、コントリビュータをはじめとしたソフトウェアエンジニアや、各社の様々な案件でシステム開発を行うエンジニアがおり、本イベントではそれらのエンジニアがもつノウハウや悩みをNTTグループ内外のエンジニアと共有・議論することで、参加者がもっとおもしろいエンジニアになることを目的としています。
+
+
+
+
+
+
+ タイムテーブル
+
+ TIME TABLE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 発表資料1 発表資料2(非掲載)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TechConf開催日のころにはDocker 1.13がリリースされている見込みです. また,新ランタイムcontainerdのコミュニティ移管や,分散ストレージInfinitのソースコード公開も2017年の早期に予定されています.こうした近況をお伝えするほか,Dockerへのパッチの投げ方,バグレポートの仕方もご案内します.
+
+
須田瑛大(
@_AkihiroSuda_ ) - 日本電信電話株式会社
Dockerメンテナ@SIC
発表資料
+
+
+
+
+
+
+
+
+
+
+
+
+ Docker containers uses various OS primitives like cgroup, namespace and secomp, SElinux etc for isolating and securing containers. By default docker containers may not be secure enough to run at your server. This talk will help to understand the security concerns in containers and how it can be avoided.
+
+
Kunal Kushwaha(
@kunalkushwaha ) - 日本電信電話株式会社
Kunal works for NTT OSSC for Linux Containers community projects. He is also co-organizer of Docker Tokyo Meetups and gives talk in Container related events at Tokyo.
発表資料
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Apache Hadoopが登場して10年が経ち、今や分散処理技術として重要なものになりました。Hadoopによって大量データの蓄積や分散処理による高速化の恩恵を受けてきました。そして、単純なログ集計から分析・機械学習といったより高度な活用を推進しています。高度な利用ではApache Sparkが欠かせない技術です。Sparkを利用することで、分析や機械学習を容易に扱えるようになり、これまで結果を得るために必要だった時間を大幅に削減することができるようになりました。本セッションでは、HadoopやSparkを利用する上での基礎的な仕組み、抑えておくべきポイントといった本当のところをお伝えします!
+
+
鯵坂明(
@ajis_ka ) - NTTデータ
Akira Ajisaka is a software engineer working at NTT DATA, Japan. He belongs to OSS Professional Services team and deploys and operates Hadoop clusters for customers. He sometimes troubleshoots them by investigating source code and creating a patch. He is an Apache Hadoop committer/PMC member and he involves in various components of Hadoop for improving usability and supportability. He wrote blog posts about activities of the development of Apache Hadoop annually.
+
+
+
+
+
+
+
+
+
+
+
+
+ Hadoop やその周辺プロダクトを試してみたい人や、手っ取り早く動作確認するための環境が欲しい人向けに、Apache Bigtop を使って Docker コンテナ上に Hadoop ソフトウェアスタックを簡単に構築する方法を紹介します。以下の記事±αの内容を話します。
+
+
http://qiita.com/sekikn/items/18954e9b302c38eb5b55 関堅吾(
@sekikn39 ) - NTTデータ
OSS プロフェッショナルサービスという担当で Apache Hadoop のサポート業務に従事. Apache Yetus committer & PMC member.
+
+
+
+
+
+
+
+
+
+
+
+
+ 「Serverless」と「Blockchain」が注目されています.これらのテクノロジーを分解すると,その技術要素は多くの共通項を持ちます.コンテナ.分散.イベントドリブン.トランザクション.ワークフロー etc... ServerlessとBlockchainを分解し,組み合わせることで見えてくる新しい地平は何か.そして作成したデモシステムについてご紹介します. 林田貴宏 - NTTコムウェア 技術開発部門スペシャリスト.クラウドサービスやテストツール開発,Scrum,LeSSの取り組みを経て,現在Serverless分野に注力. 発表資料
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NTTドコモのビッグデータ分析環境"IDAP"は、AWSの各種サービスを利用して内製で開発されています。 そこに至るまでの経緯と開発運用のスタイルについて紹介します。
+
+
伊吹勇郎 - NTTドコモ
NTTドコモサービスイノベーションビッグデータ担当所属。入社以来データ分析およびデータ分析環境の構築に従事。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PostgreSQL 10 will be released sometime later this year. Beside the change in the policy of version numbering, there are number of significant features in the pipeline. As a development community member, I would like to highlight some of those features that have a good chance of being a part of this release - such as many new replication features, declarative partitioning, more FDW query push-down, enhanced parallelism and asynchronous execution capabilities, better statistics for query optimization, JIT-compiled expression evaluation, and many others.
+
+ Most of the anticipated features in PostgreSQL 10 have been consistently requested by the wider developer community using PostgreSQL and their availability opens up the possibility of even widespread adoption of PostgreSQL. 発表資料 Amit Langote(@amitlan ) - NTT OSSセンタ PostgreSQL developer
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 国際的なセキュリティ標準である PCI DSS をベースに、データベースのセキュリティに関して、どのような観点での検討が必要なのかを考えます。これからセキュリティっぽいことを考えなければいけない皆様の一助となれば幸いです。
+ なお、 発表は入門的な内容ですが、当方はセキュリティの専門家ではないので、詳しい方々からの優しいアドバイスを頂きたいと思っています。セキュリティに関して一家言ある皆様のご参加もお待ちしております。 発表資料 大山真実(@ooyamams1987 ) - NTT OSSセンタ 2012年NTTデータ入社。OSSプロフェッショナルサービス配属。HadoopなどのOSS製品の検証・サポート業務を担当。2015年からNTT OSSセンタにてPostgreSQLの検証・サポート業務を担当中。
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 「PostgreSQL 10: What to look for?」「Database Security for PCIDSS」に関する疑問質問、PostgreSQLやその他データベースに関する疑問質問をきっかけにみんなでディスカッションしようという時間です。おやつタイムも兼ねてます。様々なバックグラウンドを持つ技術者が集まる良い機会ですので、お気軽にご参加、ご発言ください! 藤井雅雄(@fujii_masao ) - NTTデータ PostgreSQL committer Amit Langote(@amitlan ) - NTT OSSセンタ PostgreSQL developer 大山真実(@ooyamams1987 ) - NTT OSSセンタ 2012年NTTデータ入社。OSSプロフェッショナルサービス配属。HadoopなどのOSS製品の検証・サポート業務を担当。2015年からNTT OSSセンタにてPostgreSQLの検証・サポート業務を担当中。 澤田雅彦(@sawada_masahiko ) - NTT OSSセンタ PostgreSQL技術サポートを行う傍ら、PostgreSQL開発者としてPostgreSQLコミュニティに参画し、PostgreSQL本体の開発にも従事。
+
+
+
+
+
+
+
+
+
+
+
+
+
+ シェル芸とは、IT環境における各種計算・統計・テキスト処理等の課題解決に際し、1からプログラムを書き起こすのではなく、UNIX哲学に基づき、広く普及している既存コマンドの組み合わせによって、シェル上のワンライナーで即座に課題を解決してしまうテクニックのことです。
+ 昨今 DevOps が話題になっていますが、オフィスの空調・椅子・キーボード・エディタ・ネットワーク接続に恵まれたDev(プログラマ)に対し、客先のデータセンタで寒さに震え、椅子もなく、キーボードも固く、エディタも選べず、時にオフラインでの作業を強いられるOps(インフラエンジニア)にとって、イザという時に頼れるのは己の知恵と勇気とcoreutilsだけという場面も珍しくありません。
+ このセッションでは、Software Design 2017年1月号に掲載されたシェル芸特集を題材に、明日から実践できるシェル芸の基礎をハンズオン形式で体感していただきます。 発表資料 石井久治(@hisaharu ) - 日本電信電話株式会社 NTT SICにてDevOpsの普及啓蒙と実践を推進。日本唯一のシェルプログラミングコミュニティ「USP友の会」幹事
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NTTソフトウェア社内の新規ビジネス開拓制度(戦略ビジネス特区)で、今冬トライアルが開始されるWebサービスをAWS上に構築しました。
+ EC2 Container Service (ECS)とSpotFleetを中心とした構成で、限られた時間の中でAWSの各種マネージドサービスも利用しましたので、その経験から得られたノウハウを、新規ビジネス開拓制度のご紹介も交えながら共有します。 須藤悠 - NTTソフトウェア ソフトウェア生産技術センター Grails推進室 "Grails Advocate" / ソフト道場 AWSチーム。技術研修の講師や、社内の「困った」に対する技術支援をしています。だいたいピザとGrailsとAWSで生きています。 発表資料
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ここ最近、いろいろな業界で話題になってきたブロックチェーン。
+ 暗号、P2P、分散合意など面白い話題てんこ盛りなブロックチェーンについて、今回は、よく知らない人向けの入門的なお話をします。
+ ご存知 Bitcoin を題材にしてブロックチェーンの仕組みを解説した後、昨今つぎつぎと登場する新たなブロックチェーン技術の動向についても簡単に説明します。 発表資料 北條真史 - NTTデータ ブロックチェーン技術のインフラ/ミドルレイヤを見てます。
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NTTグループ内では、内製化やアジャイル開発の流れを受けて、Slackなどのチャットが利用されるようになりました。チャットのあるところにBotあり。ということで、各社の現場で使われているBotや、行なわれているChatOpsの事例を紹介します。その後、Botの開発で困ったこと、ChatOpsで上手くいった/いかなかったこと、こんなことをやりたいなどのディスカッションを行います。 発表資料1 発表資料2 堀内晨彦(@hico_horiuchi ) - NTTコミュニケーションズ Enterprise Cloud 2.0のベアメタルの開発をしています。うどん大修士卒で研究はクラウドWeb鯖の負荷監視とオートスケールアルゴリズム。バイトでRailsとReact。JANOGスタッフ、Sensu TalksとHubot×ChatOps勉強会主催。Docker、Emacs、Golang、Itamae好き。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 昨今巷で流行りの"DevOps"。
+ そこもあそこも「これからはDevOpsだ!!」などと言ってますが、中には「DevOpsの定義を決めよう!」みたいな話や「え、これでDevOpsやってますとか言ってるの?」みたいな話しがちらほら・・・
+ 本セッションではNTTのDeveloperたちが”Dev”の視点から見ている”DevOps”の今と今後について語りあいます。
+ ※Operatorの方もお待ちしております 小倉真人(@Mahito ) - NTTコミュニケーションズ 2014年にNTTコムウェアから現職へ本業は主夫。副業でIT芸人の活動として、OpenStackのコミュニティ活動をしつつコンテナやクラウドネイティブについても調べたり、勉強会を開いたりもしている。また、イベント対応、リクルータなども行っていてもはや何でも屋さん。 石井久治(@hisaharu ) - 日本電信電話株式会社 NTT SICにてDevOpsの普及啓蒙と実践を推進。日本唯一のシェルプログラミングコミュニティ「USP友の会」幹事
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NTTグループの新人(1~3年目程度を想定)を対象に、日々の業務や技術情報などを交換することを目的としたアンカンファレンスです。
+
+
萬治渉 - NTTソフトウェア
新人 of NTTソフトウェアOpenStack, Ansible, StackStorm, ...
堀内晨彦(
@hico_horiuchi ) - NTTコミュニケーションズ
Enterprise Cloud 2.0のベアメタルの開発をしています。うどん大修士卒で研究はクラウドWeb鯖の負荷監視とオートスケールアルゴリズム。バイトでRailsとReact。JANOGスタッフ、Sensu TalksとHubot×ChatOps勉強会主催。Docker、Emacs、Golang、Itamae好き。
+
+
+
+
+
+
+
+
+
+
+
+
+ このセッションでは、普段OSSプロジェクトにフルコミットしている自分の生活や仕事のスタイルについて共有します。また、そのような特殊な人材をなぜ会社は雇って維持しなければいけないのかについて紹介し、聴講者からの質問を交えてディスカッションを行います。 発表資料 市原裕史(@hichihara33 ) - 日本電信電話株式会社 NTT ソフトウェアイノベーションセンタ所属。OpenStack NeutronプロジェクトのCore Reviewerとして業務の90%以上はOSSコミュニティでの活動を行っている。
+
+
+
+
+
+
+
+
+
+
+ 14:10 - 17:20
+
+
+
+
+
+
+
+ (招待プログラム)100G高速PCルーター Kamuee
+
+
+ Intel DPDKを利用してNTTComで内製開発しているルータソフトウェア Kamuee について展示。実機は田町5Fにあり、リモート接続でベンチマークのデモを見せる。
+
+
+ BGPフルルート52万経路を検索しつつ、128Bイーサネットフレームを145Gbps分転送可能(120Mpps程度)。開発中ではあるが、BGPセッションを張りフルルートを受けつつ同程度の転送性能を発揮できるようになった。CLIなどを紹介。
+
+
小原泰弘 - NTTコミュニケーションズ
GNU Zebra ospf6d 開発者。IEEE INFOCOM, USENIX FAST, ACM SIGCOMMに論文採録実績有り。北陸先端大助教、UCSCポスドクを経て2013年から現職(技術開発部)。
+
+
+
+
+
+
+
+
+ FPGAアクセラレータを用いたスイッチレスネットワーク
+
+
+ C言語などからの高位合成処理エンジンの充実で、ソフトウェア開発者からもFPGA等を用いた高速信号処理が身近なものとなっている。
+
+
+ 今回、FPGA実装技術養成の一環として、PCIe接続したFPGAボードとOpenCLベースのプログラミング環境を用い、MPLS-TPパケット伝送機能の一部の実装を行った。
+
+
+ デモではこれを用いてPC間をスイッチを用いずリング接続した構成を展示、得られた開発ノウハウ等を共有する。
+
+
保米本徹(
@homelith )
岩下秀徳
- NTT ネットワークサービスシステム研究所
平素は長距離光通信を支える伝送装置の研究開発に従事し、高速信号処理に不可欠なディジタル回路実装技術、装置の高信頼性を保証するソフトエラー試験技術に取組んでいます。
+
+
+
+
+
+
+
+
+ NFVにおいてセキュリティ機能をオートスケールするプロトタイプの紹介
+
+
+ ネットワーク機能仮想化(NFV)の世界では、キャリアネットワーク機能のオートヒーリングやオートスケーリングが自由自在にできるとの噂が囁かれています。
+
+
+ ですが、それは果たして真実でしょうか? この展示では、オートスケーリングのプロトタイピングを通じて得られた課題や技術のポイントを紹介したいと思います。
+
+
中村哲朗
林裕平
大谷育生
木村明寛
- NTT ネットワークサービスシステム研究所
奥田兼三
- NTT ネットワーク基盤技術研究所
キャリアネットワークにおける仮想化に関する検討に従事しています。
+
+
+
+
+
+
+
+
+ E2D3のデモ展示
+
+
+ E2D3とは、表計算ソフトExcelのシート情報に対し、可視化ライブラリ「D3.js」の機能を適用することで、データドリブン設計のビジュアライゼーションを実現するツールです。
+
+
+ エンジニアでないと作成が難しい「D3.jsでのビジュアライゼーション」を、プログラマでない方にも簡単に実現できることが特徴です。
+
+
+
+ 会場ではデモ用PC(または参加者の持ち込みPC)によりハンズオン体験ができます。
+
+
+ (ハンズオン体験で必要なPCは、下記の環境が必要です)
+
+
+
+
+ ハンズオン体験に必要な環境 ExcelOnline または Excel2013以降が利用できること インターネットに接続できること
+
+
+
+
+ 利用チュートリアルチュートリアルへのリンク
+
+
+
+
+ 利用者向けのFAQFAQページへのリンク
+
+
+
+
+ 可視化テンプレート開発者向けマニュアル可視化テンプレートの追加方法について
+
+
+
+ 当日は、アフター5にコミッタをしているグループ社員が、手厚く?サポートする予定です。
+
+
+
+
+
+
+
+
+
+
+
+ Java 障害解析支援ツール HeapStats
+
+
+ Java Virtual Machine(JVM)が管理するヒープメモリの詳細な状況を、Javaアプリケーションの性能に極力影響を与えずに取得できるOSS(Open Source Software)の監視・解析ツールです。
+ 開発時のデバッグ・試験から運用時にいたるまで、迅速な問題解決を支援します。
+
+
久保田祐史
山崎秀夫
- NTT OSSセンタ
Java, OpenJDK, HeapStats テクニカルサポート担当。主に Java に関する OSS コミュニティ活動や発表・登壇活動を行っています。Java に関するお悩みも随時お聞きいたします。
+
+
+
+
+
+
+
+
+
+ 参加登録
+
+ REGISTRATION
+
+
+
+
+ 本イベントは終了しました。 多数のご来場ありがとうございました。
+
+
+ このイベントサイトはGitHub上 で作成しました。
+
+
+
+
+
+
+ アクセス
+
+ ACCESS
+
+
+
+
+ グランパークプラザのアクセス をご覧ください。
+
+
+
+
+
+
+
+
+
diff --git a/01/showcase.html b/01/showcase.html
new file mode 100644
index 00000000..d427f11c
--- /dev/null
+++ b/01/showcase.html
@@ -0,0 +1,127 @@
+
+
+
+
+ 14:10 - 17:20
+
+
+
+
+
+
+
+ (招待プログラム)100G高速PCルーター Kamuee
+
+
+ Intel DPDKを利用してNTTComで内製開発しているルータソフトウェア Kamuee について展示。実機は田町5Fにあり、リモート接続でベンチマークのデモを見せる。
+
+
+ BGPフルルート52万経路を検索しつつ、128Bイーサネットフレームを145Gbps分転送可能(120Mpps程度)。開発中ではあるが、BGPセッションを張りフルルートを受けつつ同程度の転送性能を発揮できるようになった。CLIなどを紹介。
+
+
小原泰弘 - NTTコミュニケーションズ
GNU Zebra ospf6d 開発者。IEEE INFOCOM, USENIX FAST, ACM SIGCOMMに論文採録実績有り。北陸先端大助教、UCSCポスドクを経て2013年から現職(技術開発部)。
+
+
+
+
+
+
+
+
+ FPGAアクセラレータを用いたスイッチレスネットワーク
+
+
+ C言語などからの高位合成処理エンジンの充実で、ソフトウェア開発者からもFPGA等を用いた高速信号処理が身近なものとなっている。
+
+
+ 今回、FPGA実装技術養成の一環として、PCIe接続したFPGAボードとOpenCLベースのプログラミング環境を用い、MPLS-TPパケット伝送機能の一部の実装を行った。
+
+
+ デモではこれを用いてPC間をスイッチを用いずリング接続した構成を展示、得られた開発ノウハウ等を共有する。
+
+
保米本徹(
@homelith )
岩下秀徳
- NTT ネットワークサービスシステム研究所
平素は長距離光通信を支える伝送装置の研究開発に従事し、高速信号処理に不可欠なディジタル回路実装技術、装置の高信頼性を保証するソフトエラー試験技術に取組んでいます。
+
+
+
+
+
+
+
+
+ NFVにおいてセキュリティ機能をオートスケールするプロトタイプの紹介
+
+
+ ネットワーク機能仮想化(NFV)の世界では、キャリアネットワーク機能のオートヒーリングやオートスケーリングが自由自在にできるとの噂が囁かれています。
+
+
+ ですが、それは果たして真実でしょうか? この展示では、オートスケーリングのプロトタイピングを通じて得られた課題や技術のポイントを紹介したいと思います。
+
+
中村哲朗
林裕平
大谷育生
木村明寛
- NTT ネットワークサービスシステム研究所
奥田兼三
- NTT ネットワーク基盤技術研究所
キャリアネットワークにおける仮想化に関する検討に従事しています。
+
+
+
+
+
+
+
+
+ E2D3のデモ展示
+
+
+ E2D3とは、表計算ソフトExcelのシート情報に対し、可視化ライブラリ「D3.js」の機能を適用することで、データドリブン設計のビジュアライゼーションを実現するツールです。
+
+
+ エンジニアでないと作成が難しい「D3.jsでのビジュアライゼーション」を、プログラマでない方にも簡単に実現できることが特徴です。
+
+
+
+ 会場ではデモ用PC(または参加者の持ち込みPC)によりハンズオン体験ができます。
+
+
+ (ハンズオン体験で必要なPCは、下記の環境が必要です)
+
+
+
+
+ ハンズオン体験に必要な環境 ExcelOnline または Excel2013以降が利用できること インターネットに接続できること
+
+
+
+
+ 利用チュートリアルチュートリアルへのリンク
+
+
+
+
+ 利用者向けのFAQFAQページへのリンク
+
+
+
+
+ 可視化テンプレート開発者向けマニュアル可視化テンプレートの追加方法について
+
+
+
+ 当日は、アフター5にコミッタをしているグループ社員が、手厚く?サポートする予定です。
+
+
+
+
+
+
+
+
+
+
+
+ Java 障害解析支援ツール HeapStats
+
+
+ Java Virtual Machine(JVM)が管理するヒープメモリの詳細な状況を、Javaアプリケーションの性能に極力影響を与えずに取得できるOSS(Open Source Software)の監視・解析ツールです。
+ 開発時のデバッグ・試験から運用時にいたるまで、迅速な問題解決を支援します。
+
+
久保田祐史
山崎秀夫
- NTT OSSセンタ
Java, OpenJDK, HeapStats テクニカルサポート担当。主に Java に関する OSS コミュニティ活動や発表・登壇活動を行っています。Java に関するお悩みも随時お聞きいたします。
+
+
+
+
+
diff --git a/01/timetable.html b/01/timetable.html
new file mode 100644
index 00000000..3bad686a
--- /dev/null
+++ b/01/timetable.html
@@ -0,0 +1,311 @@
+
diff --git a/01/unconference.html b/01/unconference.html
new file mode 100644
index 00000000..4ee1cf04
--- /dev/null
+++ b/01/unconference.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+ 昨今巷で流行りの"DevOps"。
+ そこもあそこも「これからはDevOpsだ!!」などと言ってますが、中には「DevOpsの定義を決めよう!」みたいな話や「え、これでDevOpsやってますとか言ってるの?」みたいな話しがちらほら・・・
+ 本セッションではNTTのDeveloperたちが”Dev”の視点から見ている”DevOps”の今と今後について語りあいます。
+ ※Operatorの方もお待ちしております 小倉真人(@Mahito ) - NTTコミュニケーションズ 2014年にNTTコムウェアから現職へ本業は主夫。副業でIT芸人の活動として、OpenStackのコミュニティ活動をしつつコンテナやクラウドネイティブについても調べたり、勉強会を開いたりもしている。また、イベント対応、リクルータなども行っていてもはや何でも屋さん。 石井久治(@hisaharu ) - 日本電信電話株式会社 NTT SICにてDevOpsの普及啓蒙と実践を推進。日本唯一のシェルプログラミングコミュニティ「USP友の会」幹事
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NTTグループの新人(1~3年目程度を想定)を対象に、日々の業務や技術情報などを交換することを目的としたアンカンファレンスです。
+
+
萬治渉 - NTTソフトウェア
新人 of NTTソフトウェアOpenStack, Ansible, StackStorm, ...
堀内晨彦(
@hico_horiuchi ) - NTTコミュニケーションズ
Enterprise Cloud 2.0のベアメタルの開発をしています。うどん大修士卒で研究はクラウドWeb鯖の負荷監視とオートスケールアルゴリズム。バイトでRailsとReact。JANOGスタッフ、Sensu TalksとHubot×ChatOps勉強会主催。Docker、Emacs、Golang、Itamae好き。
+
+
+
+
+
+
+
+
+
+
+
+
+ このセッションでは、普段OSSプロジェクトにフルコミットしている自分の生活や仕事のスタイルについて共有します。また、そのような特殊な人材をなぜ会社は雇って維持しなければいけないのかについて紹介し、聴講者からの質問を交えてディスカッションを行います。 発表資料 市原裕史(@hichihara33 ) - 日本電信電話株式会社 NTT ソフトウェアイノベーションセンタ所属。OpenStack NeutronプロジェクトのCore Reviewerとして業務の90%以上はOSSコミュニティでの活動を行っている。
+
+
+
+
+
+
diff --git a/02/assets/fonts/fontawesome-webfont.eot b/02/assets/fonts/fontawesome-webfont.eot
new file mode 100644
index 00000000..e9f60ca9
Binary files /dev/null and b/02/assets/fonts/fontawesome-webfont.eot differ
diff --git a/02/assets/fonts/fontawesome-webfont.svg b/02/assets/fonts/fontawesome-webfont.svg
new file mode 100644
index 00000000..855c845e
--- /dev/null
+++ b/02/assets/fonts/fontawesome-webfont.svg
@@ -0,0 +1,2671 @@
+
+
+
+
+Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016
+ By ,,,
+Copyright Dave Gandy 2016. All rights reserved.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/02/assets/fonts/fontawesome-webfont.ttf b/02/assets/fonts/fontawesome-webfont.ttf
new file mode 100644
index 00000000..35acda2f
Binary files /dev/null and b/02/assets/fonts/fontawesome-webfont.ttf differ
diff --git a/02/assets/fonts/fontawesome-webfont.woff b/02/assets/fonts/fontawesome-webfont.woff
new file mode 100644
index 00000000..400014a4
Binary files /dev/null and b/02/assets/fonts/fontawesome-webfont.woff differ
diff --git a/02/assets/fonts/fontawesome-webfont.woff2 b/02/assets/fonts/fontawesome-webfont.woff2
new file mode 100644
index 00000000..4d13fc60
Binary files /dev/null and b/02/assets/fonts/fontawesome-webfont.woff2 differ
diff --git a/02/assets/javascripts/application.min.js b/02/assets/javascripts/application.min.js
new file mode 100644
index 00000000..1254ab72
--- /dev/null
+++ b/02/assets/javascripts/application.min.js
@@ -0,0 +1 @@
+$("a[jump-to-tab]").on("click",function(){var t,a;t=$(this).attr("jump-to-tab"),$("#"+t).click(),a=$($(this).attr("target")),$("body,html").animate({scrollTop:a.offset().top},400,"swing")});
\ No newline at end of file
diff --git a/02/assets/javascripts/modules_components.min.js b/02/assets/javascripts/modules_components.min.js
new file mode 100644
index 00000000..a356574a
--- /dev/null
+++ b/02/assets/javascripts/modules_components.min.js
@@ -0,0 +1 @@
+if(function(t,e){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=t.document?e(t,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return e(t)}:e(t)}("undefined"!=typeof window?window:this,function(t,e){"use strict";function n(t,e){var n=(e=e||et).createElement("script");n.text=t,e.head.appendChild(n).parentNode.removeChild(n)}function i(t){var e=!!t&&"length"in t&&t.length,n=dt.type(t);return"function"!==n&&!dt.isWindow(t)&&("array"===n||0===e||"number"==typeof e&&e>0&&e-1 in t)}function r(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()}function o(t,e,n){return dt.isFunction(e)?dt.grep(t,function(t,i){return!!e.call(t,i,t)!==n}):e.nodeType?dt.grep(t,function(t){return t===e!==n}):"string"!=typeof e?dt.grep(t,function(t){return st.call(e,t)>-1!==n}):Ct.test(e)?dt.filter(e,t,n):(e=dt.filter(e,t),dt.grep(t,function(t){return st.call(e,t)>-1!==n&&1===t.nodeType}))}function s(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}function a(t){var e={};return dt.each(t.match(Dt)||[],function(t,n){e[n]=!0}),e}function l(t){return t}function u(t){throw t}function c(t,e,n,i){var r;try{t&&dt.isFunction(r=t.promise)?r.call(t).done(e).fail(n):t&&dt.isFunction(r=t.then)?r.call(t,e,n):e.apply(void 0,[t].slice(i))}catch(t){n.apply(void 0,[t])}}function f(){et.removeEventListener("DOMContentLoaded",f),t.removeEventListener("load",f),dt.ready()}function h(){this.expando=dt.expando+h.uid++}function d(t){return"true"===t||"false"!==t&&("null"===t?null:t===+t+""?+t:jt.test(t)?JSON.parse(t):t)}function p(t,e,n){var i;if(void 0===n&&1===t.nodeType)if(i="data-"+e.replace(Pt,"-$&").toLowerCase(),"string"==typeof(n=t.getAttribute(i))){try{n=d(n)}catch(t){}Ht.set(t,e,n)}else n=void 0;return n}function g(t,e,n,i){var r,o=1,s=20,a=i?function(){return i.cur()}:function(){return dt.css(t,e,"")},l=a(),u=n&&n[3]||(dt.cssNumber[e]?"":"px"),c=(dt.cssNumber[e]||"px"!==u&&+l)&&Wt.exec(dt.css(t,e));if(c&&c[3]!==u){u=u||c[3],n=n||[],c=+l||1;do{c/=o=o||".5",dt.style(t,e,c+u)}while(o!==(o=a()/l)&&1!==o&&--s)}return n&&(c=+c||+l||0,r=n[1]?c+(n[1]+1)*n[2]:+n[2],i&&(i.unit=u,i.start=c,i.end=r)),r}function m(t){var e,n=t.ownerDocument,i=t.nodeName,r=qt[i];return r||(e=n.body.appendChild(n.createElement(i)),r=dt.css(e,"display"),e.parentNode.removeChild(e),"none"===r&&(r="block"),qt[i]=r,r)}function v(t,e){for(var n,i,r=[],o=0,s=t.length;o-1)r&&r.push(o);else if(u=dt.contains(o.ownerDocument,o),s=y(f.appendChild(o),"script"),u&&b(s),n)for(c=0;o=s[c++];)Gt.test(o.type||"")&&n.push(o);return f}function E(){return!0}function T(){return!1}function C(){try{return et.activeElement}catch(t){}}function w(t,e,n,i,r,o){var s,a;if("object"==typeof e){"string"!=typeof n&&(i=i||n,n=void 0);for(a in e)w(t,a,n,i,e[a],o);return t}if(null==i&&null==r?(r=n,i=n=void 0):null==r&&("string"==typeof n?(r=i,i=void 0):(r=i,i=n,n=void 0)),!1===r)r=T;else if(!r)return t;return 1===o&&(s=r,(r=function(t){return dt().off(t),s.apply(this,arguments)}).guid=s.guid||(s.guid=dt.guid++)),t.each(function(){dt.event.add(this,e,r,i,n)})}function A(t,e){return r(t,"table")&&r(11!==e.nodeType?e:e.firstChild,"tr")?dt(">tbody",t)[0]||t:t}function x(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function S(t){var e=ee.exec(t.type);return e?t.type=e[1]:t.removeAttribute("type"),t}function D(t,e){var n,i,r,o,s,a,l,u;if(1===e.nodeType){if(Lt.hasData(t)&&(o=Lt.access(t),s=Lt.set(e,o),u=o.events)){delete s.handle,s.events={};for(r in u)for(n=0,i=u[r].length;n1&&"string"==typeof p&&!ht.checkClone&&te.test(p))return t.each(function(n){var o=t.eq(n);g&&(e[0]=p.call(this,n,o.html())),I(o,e,i,r)});if(h&&(o=_(e,t[0].ownerDocument,!1,t,r),s=o.firstChild,1===o.childNodes.length&&(o=s),s||r)){for(l=(a=dt.map(y(o,"script"),x)).length;f=0&&nE.cacheLength&&delete t[e.shift()],t[n+" "]=i}var e=[];return t}function i(t){return t[W]=!0,t}function r(t){var e=N.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function o(t,e){for(var n=t.split("|"),i=n.length;i--;)E.attrHandle[n[i]]=e}function s(t,e){var n=e&&t,i=n&&1===t.nodeType&&1===e.nodeType&&t.sourceIndex-e.sourceIndex;if(i)return i;if(n)for(;n=n.nextSibling;)if(n===e)return-1;return t?1:-1}function a(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&Tt(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function l(t){return i(function(e){return e=+e,i(function(n,i){for(var r,o=t([],n.length,e),s=o.length;s--;)n[r=o[s]]&&(n[r]=!(i[r]=n[r]))})})}function u(t){return t&&void 0!==t.getElementsByTagName&&t}function c(){}function f(t){for(var e=0,n=t.length,i="";e1?function(e,n,i){for(var r=t.length;r--;)if(!t[r](e,n,i))return!1;return!0}:t[0]}function p(t,n,i){for(var r=0,o=n.length;r-1&&(i[u]=!(s[u]=f))}}else b=g(b===s?b.splice(m,b.length):b),o?o(null,s,b,l):Y.apply(s,b)})}function v(t){for(var e,n,i,r=t.length,o=E.relative[t[0].type],s=o||E.relative[" "],a=o?1:0,l=h(function(t){return t===e},s,!0),u=h(function(t){return J(e,t)>-1},s,!0),c=[function(t,n,i){var r=!o&&(i||n!==S)||((e=n).nodeType?l(t,n,i):u(t,n,i));return e=null,r}];a1&&d(c),a>1&&f(t.slice(0,a-1).concat({value:" "===t[a-2].type?"*":""})).replace(ot,"$1"),n,a0,o=t.length>0,s=function(i,s,a,l,u){var c,f,h,d=0,p="0",m=i&&[],v=[],y=S,b=i||o&&E.find.TAG("*",u),_=M+=null==y?1:Math.random()||.1,T=b.length;for(u&&(S=s===N||s||u);p!==T&&null!=(c=b[p]);p++){if(o&&c){for(f=0,s||c.ownerDocument===N||(I(c),a=!L);h=t[f++];)if(h(c,s||N,a)){l.push(c);break}u&&(M=_)}r&&((c=!h&&c)&&d--,i&&m.push(c))}if(d+=p,r&&p!==d){for(f=0;h=n[f++];)h(m,v,s,a);if(i){if(d>0)for(;p--;)m[p]||v[p]||(v[p]=$.call(l));v=g(v)}Y.apply(l,v),u&&!i&&v.length>0&&d+n.length>1&&e.uniqueSort(l)}return u&&(M=_,S=y),m};return r?i(s):s}var b,_,E,T,C,w,A,x,S,D,O,I,N,k,L,H,j,P,R,W="sizzle"+1*new Date,F=t.document,M=0,B=0,q=n(),V=n(),U=n(),G=function(t,e){return t===e&&(O=!0),0},K={}.hasOwnProperty,Q=[],$=Q.pop,X=Q.push,Y=Q.push,z=Q.slice,J=function(t,e){for(var n=0,i=t.length;n+~]|"+tt+")"+tt+"*"),lt=new RegExp("="+tt+"*([^\\]'\"]*?)"+tt+"*\\]","g"),ut=new RegExp(it),ct=new RegExp("^"+et+"$"),ft={ID:new RegExp("^#("+et+")"),CLASS:new RegExp("^\\.("+et+")"),TAG:new RegExp("^("+et+"|[*])"),ATTR:new RegExp("^"+nt),PSEUDO:new RegExp("^"+it),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+tt+"*(even|odd|(([+-]|)(\\d*)n|)"+tt+"*(?:([+-]|)"+tt+"*(\\d+)|))"+tt+"*\\)|)","i"),bool:new RegExp("^(?:"+Z+")$","i"),needsContext:new RegExp("^"+tt+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+tt+"*((?:-\\d)?\\d*)"+tt+"*\\)|)(?=[^-]|$)","i")},ht=/^(?:input|select|textarea|button)$/i,dt=/^h\d$/i,pt=/^[^{]+\{\s*\[native \w/,gt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,mt=/[+~]/,vt=new RegExp("\\\\([\\da-f]{1,6}"+tt+"?|("+tt+")|.)","ig"),yt=function(t,e,n){var i="0x"+e-65536;return i!==i||n?e:i<0?String.fromCharCode(i+65536):String.fromCharCode(i>>10|55296,1023&i|56320)},bt=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,_t=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},Et=function(){I()},Tt=h(function(t){return!0===t.disabled&&("form"in t||"label"in t)},{dir:"parentNode",next:"legend"});try{Y.apply(Q=z.call(F.childNodes),F.childNodes),Q[F.childNodes.length].nodeType}catch(t){Y={apply:Q.length?function(t,e){X.apply(t,z.call(e))}:function(t,e){for(var n=t.length,i=0;t[n++]=e[i++];);t.length=n-1}}}_=e.support={},C=e.isXML=function(t){var e=t&&(t.ownerDocument||t).documentElement;return!!e&&"HTML"!==e.nodeName},I=e.setDocument=function(t){var e,n,i=t?t.ownerDocument||t:F;return i!==N&&9===i.nodeType&&i.documentElement?(N=i,k=N.documentElement,L=!C(N),F!==N&&(n=N.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",Et,!1):n.attachEvent&&n.attachEvent("onunload",Et)),_.attributes=r(function(t){return t.className="i",!t.getAttribute("className")}),_.getElementsByTagName=r(function(t){return t.appendChild(N.createComment("")),!t.getElementsByTagName("*").length}),_.getElementsByClassName=pt.test(N.getElementsByClassName),_.getById=r(function(t){return k.appendChild(t).id=W,!N.getElementsByName||!N.getElementsByName(W).length}),_.getById?(E.filter.ID=function(t){var e=t.replace(vt,yt);return function(t){return t.getAttribute("id")===e}},E.find.ID=function(t,e){if(void 0!==e.getElementById&&L){var n=e.getElementById(t);return n?[n]:[]}}):(E.filter.ID=function(t){var e=t.replace(vt,yt);return function(t){var n=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return n&&n.value===e}},E.find.ID=function(t,e){if(void 0!==e.getElementById&&L){var n,i,r,o=e.getElementById(t);if(o){if((n=o.getAttributeNode("id"))&&n.value===t)return[o];for(r=e.getElementsByName(t),i=0;o=r[i++];)if((n=o.getAttributeNode("id"))&&n.value===t)return[o]}return[]}}),E.find.TAG=_.getElementsByTagName?function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):_.qsa?e.querySelectorAll(t):void 0}:function(t,e){var n,i=[],r=0,o=e.getElementsByTagName(t);if("*"===t){for(;n=o[r++];)1===n.nodeType&&i.push(n);return i}return o},E.find.CLASS=_.getElementsByClassName&&function(t,e){if(void 0!==e.getElementsByClassName&&L)return e.getElementsByClassName(t)},j=[],H=[],(_.qsa=pt.test(N.querySelectorAll))&&(r(function(t){k.appendChild(t).innerHTML=" ",t.querySelectorAll("[msallowcapture^='']").length&&H.push("[*^$]="+tt+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||H.push("\\["+tt+"*(?:value|"+Z+")"),t.querySelectorAll("[id~="+W+"-]").length||H.push("~="),t.querySelectorAll(":checked").length||H.push(":checked"),t.querySelectorAll("a#"+W+"+*").length||H.push(".#.+[+~]")}),r(function(t){t.innerHTML=" ";var e=N.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&H.push("name"+tt+"*[*^$|!~]?="),2!==t.querySelectorAll(":enabled").length&&H.push(":enabled",":disabled"),k.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&H.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),H.push(",.*:")})),(_.matchesSelector=pt.test(P=k.matches||k.webkitMatchesSelector||k.mozMatchesSelector||k.oMatchesSelector||k.msMatchesSelector))&&r(function(t){_.disconnectedMatch=P.call(t,"*"),P.call(t,"[s!='']:x"),j.push("!=",it)}),H=H.length&&new RegExp(H.join("|")),j=j.length&&new RegExp(j.join("|")),e=pt.test(k.compareDocumentPosition),R=e||pt.test(k.contains)?function(t,e){var n=9===t.nodeType?t.documentElement:t,i=e&&e.parentNode;return t===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):t.compareDocumentPosition&&16&t.compareDocumentPosition(i)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},G=e?function(t,e){if(t===e)return O=!0,0;var n=!t.compareDocumentPosition-!e.compareDocumentPosition;return n||(1&(n=(t.ownerDocument||t)===(e.ownerDocument||e)?t.compareDocumentPosition(e):1)||!_.sortDetached&&e.compareDocumentPosition(t)===n?t===N||t.ownerDocument===F&&R(F,t)?-1:e===N||e.ownerDocument===F&&R(F,e)?1:D?J(D,t)-J(D,e):0:4&n?-1:1)}:function(t,e){if(t===e)return O=!0,0;var n,i=0,r=t.parentNode,o=e.parentNode,a=[t],l=[e];if(!r||!o)return t===N?-1:e===N?1:r?-1:o?1:D?J(D,t)-J(D,e):0;if(r===o)return s(t,e);for(n=t;n=n.parentNode;)a.unshift(n);for(n=e;n=n.parentNode;)l.unshift(n);for(;a[i]===l[i];)i++;return i?s(a[i],l[i]):a[i]===F?-1:l[i]===F?1:0},N):N},e.matches=function(t,n){return e(t,null,null,n)},e.matchesSelector=function(t,n){if((t.ownerDocument||t)!==N&&I(t),n=n.replace(lt,"='$1']"),_.matchesSelector&&L&&!U[n+" "]&&(!j||!j.test(n))&&(!H||!H.test(n)))try{var i=P.call(t,n);if(i||_.disconnectedMatch||t.document&&11!==t.document.nodeType)return i}catch(t){}return e(n,N,null,[t]).length>0},e.contains=function(t,e){return(t.ownerDocument||t)!==N&&I(t),R(t,e)},e.attr=function(t,e){(t.ownerDocument||t)!==N&&I(t);var n=E.attrHandle[e.toLowerCase()],i=n&&K.call(E.attrHandle,e.toLowerCase())?n(t,e,!L):void 0;return void 0!==i?i:_.attributes||!L?t.getAttribute(e):(i=t.getAttributeNode(e))&&i.specified?i.value:null},e.escape=function(t){return(t+"").replace(bt,_t)},e.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},e.uniqueSort=function(t){var e,n=[],i=0,r=0;if(O=!_.detectDuplicates,D=!_.sortStable&&t.slice(0),t.sort(G),O){for(;e=t[r++];)e===t[r]&&(i=n.push(r));for(;i--;)t.splice(n[i],1)}return D=null,t},T=e.getText=function(t){var e,n="",i=0,r=t.nodeType;if(r){if(1===r||9===r||11===r){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)n+=T(t)}else if(3===r||4===r)return t.nodeValue}else for(;e=t[i++];)n+=T(e);return n},(E=e.selectors={cacheLength:50,createPseudo:i,match:ft,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(vt,yt),t[3]=(t[3]||t[4]||t[5]||"").replace(vt,yt),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||e.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&e.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return ft.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&ut.test(n)&&(e=w(n,!0))&&(e=n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(vt,yt).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=q[t+" "];return e||(e=new RegExp("(^|"+tt+")"+t+"("+tt+"|$)"))&&q(t,function(t){return e.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")})},ATTR:function(t,n,i){return function(r){var o=e.attr(r,t);return null==o?"!="===n:!n||(o+="","="===n?o===i:"!="===n?o!==i:"^="===n?i&&0===o.indexOf(i):"*="===n?i&&o.indexOf(i)>-1:"$="===n?i&&o.slice(-i.length)===i:"~="===n?(" "+o.replace(rt," ")+" ").indexOf(i)>-1:"|="===n&&(o===i||o.slice(0,i.length+1)===i+"-"))}},CHILD:function(t,e,n,i,r){var o="nth"!==t.slice(0,3),s="last"!==t.slice(-4),a="of-type"===e;return 1===i&&0===r?function(t){return!!t.parentNode}:function(e,n,l){var u,c,f,h,d,p,g=o!==s?"nextSibling":"previousSibling",m=e.parentNode,v=a&&e.nodeName.toLowerCase(),y=!l&&!a,b=!1;if(m){if(o){for(;g;){for(h=e;h=h[g];)if(a?h.nodeName.toLowerCase()===v:1===h.nodeType)return!1;p=g="only"===t&&!p&&"nextSibling"}return!0}if(p=[s?m.firstChild:m.lastChild],s&&y){for(b=(d=(u=(c=(f=(h=m)[W]||(h[W]={}))[h.uniqueID]||(f[h.uniqueID]={}))[t]||[])[0]===M&&u[1])&&u[2],h=d&&m.childNodes[d];h=++d&&h&&h[g]||(b=d=0)||p.pop();)if(1===h.nodeType&&++b&&h===e){c[t]=[M,d,b];break}}else if(y&&(b=d=(u=(c=(f=(h=e)[W]||(h[W]={}))[h.uniqueID]||(f[h.uniqueID]={}))[t]||[])[0]===M&&u[1]),!1===b)for(;(h=++d&&h&&h[g]||(b=d=0)||p.pop())&&((a?h.nodeName.toLowerCase()!==v:1!==h.nodeType)||!++b||(y&&((c=(f=h[W]||(h[W]={}))[h.uniqueID]||(f[h.uniqueID]={}))[t]=[M,b]),h!==e)););return(b-=r)===i||b%i==0&&b/i>=0}}},PSEUDO:function(t,n){var r,o=E.pseudos[t]||E.setFilters[t.toLowerCase()]||e.error("unsupported pseudo: "+t);return o[W]?o(n):o.length>1?(r=[t,t,"",n],E.setFilters.hasOwnProperty(t.toLowerCase())?i(function(t,e){for(var i,r=o(t,n),s=r.length;s--;)t[i=J(t,r[s])]=!(e[i]=r[s])}):function(t){return o(t,0,r)}):o}},pseudos:{not:i(function(t){var e=[],n=[],r=A(t.replace(ot,"$1"));return r[W]?i(function(t,e,n,i){for(var o,s=r(t,null,i,[]),a=t.length;a--;)(o=s[a])&&(t[a]=!(e[a]=o))}):function(t,i,o){return e[0]=t,r(e,null,o,n),e[0]=null,!n.pop()}}),has:i(function(t){return function(n){return e(t,n).length>0}}),contains:i(function(t){return t=t.replace(vt,yt),function(e){return(e.textContent||e.innerText||T(e)).indexOf(t)>-1}}),lang:i(function(t){return ct.test(t||"")||e.error("unsupported lang: "+t),t=t.replace(vt,yt).toLowerCase(),function(e){var n;do{if(n=L?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(n=n.toLowerCase())===t||0===n.indexOf(t+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var n=t.location&&t.location.hash;return n&&n.slice(1)===e.id},root:function(t){return t===k},focus:function(t){return t===N.activeElement&&(!N.hasFocus||N.hasFocus())&&!!(t.type||t.href||~t.tabIndex)},enabled:a(!1),disabled:a(!0),checked:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&!!t.checked||"option"===e&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,!0===t.selected},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!E.pseudos.empty(t)},header:function(t){return dt.test(t.nodeName)},input:function(t){return ht.test(t.nodeName)},button:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&"button"===t.type||"button"===e},text:function(t){var e;return"input"===t.nodeName.toLowerCase()&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:l(function(){return[0]}),last:l(function(t,e){return[e-1]}),eq:l(function(t,e,n){return[n<0?n+e:n]}),even:l(function(t,e){for(var n=0;n=0;)t.push(i);return t}),gt:l(function(t,e,n){for(var i=n<0?n+e:n;++i2&&"ID"===(s=o[0]).type&&9===e.nodeType&&L&&E.relative[o[1].type]){if(!(e=(E.find.ID(s.matches[0].replace(vt,yt),e)||[])[0]))return n;c&&(e=e.parentNode),t=t.slice(o.shift().value.length)}for(r=ft.needsContext.test(t)?0:o.length;r--&&(s=o[r],!E.relative[a=s.type]);)if((l=E.find[a])&&(i=l(s.matches[0].replace(vt,yt),mt.test(o[0].type)&&u(e.parentNode)||e))){if(o.splice(r,1),!(t=i.length&&f(o)))return Y.apply(n,i),n;break}}return(c||A(t,h))(i,e,!L,n,!e||mt.test(t)&&u(e.parentNode)||e),n},_.sortStable=W.split("").sort(G).join("")===W,_.detectDuplicates=!!O,I(),_.sortDetached=r(function(t){return 1&t.compareDocumentPosition(N.createElement("fieldset"))}),r(function(t){return t.innerHTML=" ","#"===t.firstChild.getAttribute("href")})||o("type|href|height|width",function(t,e,n){if(!n)return t.getAttribute(e,"type"===e.toLowerCase()?1:2)}),_.attributes&&r(function(t){return t.innerHTML=" ",t.firstChild.setAttribute("value",""),""===t.firstChild.getAttribute("value")})||o("value",function(t,e,n){if(!n&&"input"===t.nodeName.toLowerCase())return t.defaultValue}),r(function(t){return null==t.getAttribute("disabled")})||o(Z,function(t,e,n){var i;if(!n)return!0===t[e]?e.toLowerCase():(i=t.getAttributeNode(e))&&i.specified?i.value:null}),e}(t);dt.find=yt,dt.expr=yt.selectors,dt.expr[":"]=dt.expr.pseudos,dt.uniqueSort=dt.unique=yt.uniqueSort,dt.text=yt.getText,dt.isXMLDoc=yt.isXML,dt.contains=yt.contains,dt.escapeSelector=yt.escape;var bt=function(t,e,n){for(var i=[],r=void 0!==n;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(r&&dt(t).is(n))break;i.push(t)}return i},_t=function(t,e){for(var n=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&n.push(t);return n},Et=dt.expr.match.needsContext,Tt=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,Ct=/^.[^:#\[\.,]*$/;dt.filter=function(t,e,n){var i=e[0];return n&&(t=":not("+t+")"),1===e.length&&1===i.nodeType?dt.find.matchesSelector(i,t)?[i]:[]:dt.find.matches(t,dt.grep(e,function(t){return 1===t.nodeType}))},dt.fn.extend({find:function(t){var e,n,i=this.length,r=this;if("string"!=typeof t)return this.pushStack(dt(t).filter(function(){for(e=0;e1?dt.uniqueSort(n):n},filter:function(t){return this.pushStack(o(this,t||[],!1))},not:function(t){return this.pushStack(o(this,t||[],!0))},is:function(t){return!!o(this,"string"==typeof t&&Et.test(t)?dt(t):t||[],!1).length}});var wt,At=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(dt.fn.init=function(t,e,n){var i,r;if(!t)return this;if(n=n||wt,"string"==typeof t){if(!(i="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:At.exec(t))||!i[1]&&e)return!e||e.jquery?(e||n).find(t):this.constructor(e).find(t);if(i[1]){if(e=e instanceof dt?e[0]:e,dt.merge(this,dt.parseHTML(i[1],e&&e.nodeType?e.ownerDocument||e:et,!0)),Tt.test(i[1])&&dt.isPlainObject(e))for(i in e)dt.isFunction(this[i])?this[i](e[i]):this.attr(i,e[i]);return this}return(r=et.getElementById(i[2]))&&(this[0]=r,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):dt.isFunction(t)?void 0!==n.ready?n.ready(t):t(dt):dt.makeArray(t,this)}).prototype=dt.fn,wt=dt(et);var xt=/^(?:parents|prev(?:Until|All))/,St={children:!0,contents:!0,next:!0,prev:!0};dt.fn.extend({has:function(t){var e=dt(t,this),n=e.length;return this.filter(function(){for(var t=0;t-1:1===n.nodeType&&dt.find.matchesSelector(n,t))){o.push(n);break}return this.pushStack(o.length>1?dt.uniqueSort(o):o)},index:function(t){return t?"string"==typeof t?st.call(dt(t),this[0]):st.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(dt.uniqueSort(dt.merge(this.get(),dt(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),dt.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return bt(t,"parentNode")},parentsUntil:function(t,e,n){return bt(t,"parentNode",n)},next:function(t){return s(t,"nextSibling")},prev:function(t){return s(t,"previousSibling")},nextAll:function(t){return bt(t,"nextSibling")},prevAll:function(t){return bt(t,"previousSibling")},nextUntil:function(t,e,n){return bt(t,"nextSibling",n)},prevUntil:function(t,e,n){return bt(t,"previousSibling",n)},siblings:function(t){return _t((t.parentNode||{}).firstChild,t)},children:function(t){return _t(t.firstChild)},contents:function(t){return r(t,"iframe")?t.contentDocument:(r(t,"template")&&(t=t.content||t),dt.merge([],t.childNodes))}},function(t,e){dt.fn[t]=function(n,i){var r=dt.map(this,e,n);return"Until"!==t.slice(-5)&&(i=n),i&&"string"==typeof i&&(r=dt.filter(i,r)),this.length>1&&(St[t]||dt.uniqueSort(r),xt.test(t)&&r.reverse()),this.pushStack(r)}});var Dt=/[^\x20\t\r\n\f]+/g;dt.Callbacks=function(t){t="string"==typeof t?a(t):dt.extend({},t);var e,n,i,r,o=[],s=[],l=-1,u=function(){for(r=r||t.once,i=e=!0;s.length;l=-1)for(n=s.shift();++l-1;)o.splice(n,1),n<=l&&l--}),this},has:function(t){return t?dt.inArray(t,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return r=s=[],o=n="",this},disabled:function(){return!o},lock:function(){return r=s=[],n||e||(o=n=""),this},locked:function(){return!!r},fireWith:function(t,n){return r||(n=[t,(n=n||[]).slice?n.slice():n],s.push(n),e||u()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!i}};return c},dt.extend({Deferred:function(e){var n=[["notify","progress",dt.Callbacks("memory"),dt.Callbacks("memory"),2],["resolve","done",dt.Callbacks("once memory"),dt.Callbacks("once memory"),0,"resolved"],["reject","fail",dt.Callbacks("once memory"),dt.Callbacks("once memory"),1,"rejected"]],i="pending",r={state:function(){return i},always:function(){return o.done(arguments).fail(arguments),this},catch:function(t){return r.then(null,t)},pipe:function(){var t=arguments;return dt.Deferred(function(e){dt.each(n,function(n,i){var r=dt.isFunction(t[i[4]])&&t[i[4]];o[i[1]](function(){var t=r&&r.apply(this,arguments);t&&dt.isFunction(t.promise)?t.promise().progress(e.notify).done(e.resolve).fail(e.reject):e[i[0]+"With"](this,r?[t]:arguments)})}),t=null}).promise()},then:function(e,i,r){function o(e,n,i,r){return function(){var a=this,c=arguments,f=function(){var t,f;if(!(e=s&&(i!==u&&(a=void 0,c=[t]),n.rejectWith(a,c))}};e?h():(dt.Deferred.getStackHook&&(h.stackTrace=dt.Deferred.getStackHook()),t.setTimeout(h))}}var s=0;return dt.Deferred(function(t){n[0][3].add(o(0,t,dt.isFunction(r)?r:l,t.notifyWith)),n[1][3].add(o(0,t,dt.isFunction(e)?e:l)),n[2][3].add(o(0,t,dt.isFunction(i)?i:u))}).promise()},promise:function(t){return null!=t?dt.extend(t,r):r}},o={};return dt.each(n,function(t,e){var s=e[2],a=e[5];r[e[1]]=s.add,a&&s.add(function(){i=a},n[3-t][2].disable,n[0][2].lock),s.add(e[3].fire),o[e[0]]=function(){return o[e[0]+"With"](this===o?void 0:this,arguments),this},o[e[0]+"With"]=s.fireWith}),r.promise(o),e&&e.call(o,o),o},when:function(t){var e=arguments.length,n=e,i=Array(n),r=it.call(arguments),o=dt.Deferred(),s=function(t){return function(n){i[t]=this,r[t]=arguments.length>1?it.call(arguments):n,--e||o.resolveWith(i,r)}};if(e<=1&&(c(t,o.done(s(n)).resolve,o.reject,!e),"pending"===o.state()||dt.isFunction(r[n]&&r[n].then)))return o.then();for(;n--;)c(r[n],s(n),o.reject);return o.promise()}});var Ot=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;dt.Deferred.exceptionHook=function(e,n){t.console&&t.console.warn&&e&&Ot.test(e.name)&&t.console.warn("jQuery.Deferred exception: "+e.message,e.stack,n)},dt.readyException=function(e){t.setTimeout(function(){throw e})};var It=dt.Deferred();dt.fn.ready=function(t){return It.then(t).catch(function(t){dt.readyException(t)}),this},dt.extend({isReady:!1,readyWait:1,ready:function(t){(!0===t?--dt.readyWait:dt.isReady)||(dt.isReady=!0,!0!==t&&--dt.readyWait>0||It.resolveWith(et,[dt]))}}),dt.ready.then=It.then,"complete"===et.readyState||"loading"!==et.readyState&&!et.documentElement.doScroll?t.setTimeout(dt.ready):(et.addEventListener("DOMContentLoaded",f),t.addEventListener("load",f));var Nt=function(t,e,n,i,r,o,s){var a=0,l=t.length,u=null==n;if("object"===dt.type(n)){r=!0;for(a in n)Nt(t,e,a,n[a],!0,o,s)}else if(void 0!==i&&(r=!0,dt.isFunction(i)||(s=!0),u&&(s?(e.call(t,i),e=null):(u=e,e=function(t,e,n){return u.call(dt(t),n)})),e))for(;a1,null,!0)},removeData:function(t){return this.each(function(){Ht.remove(this,t)})}}),dt.extend({queue:function(t,e,n){var i;if(t)return e=(e||"fx")+"queue",i=Lt.get(t,e),n&&(!i||Array.isArray(n)?i=Lt.access(t,e,dt.makeArray(n)):i.push(n)),i||[]},dequeue:function(t,e){e=e||"fx";var n=dt.queue(t,e),i=n.length,r=n.shift(),o=dt._queueHooks(t,e);"inprogress"===r&&(r=n.shift(),i--),r&&("fx"===e&&n.unshift("inprogress"),delete o.stop,r.call(t,function(){dt.dequeue(t,e)},o)),!i&&o&&o.empty.fire()},_queueHooks:function(t,e){var n=e+"queueHooks";return Lt.get(t,n)||Lt.access(t,n,{empty:dt.Callbacks("once memory").add(function(){Lt.remove(t,[e+"queue",n])})})}}),dt.fn.extend({queue:function(t,e){var n=2;return"string"!=typeof t&&(e=t,t="fx",n--),arguments.length\x20\t\r\n\f]+)/i,Gt=/^$|\/(?:java|ecma)script/i,Kt={option:[1,""," "],thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};Kt.optgroup=Kt.option,Kt.tbody=Kt.tfoot=Kt.colgroup=Kt.caption=Kt.thead,Kt.th=Kt.td;var Qt=/<|?\w+;/;!function(){var t=et.createDocumentFragment().appendChild(et.createElement("div")),e=et.createElement("input");e.setAttribute("type","radio"),e.setAttribute("checked","checked"),e.setAttribute("name","t"),t.appendChild(e),ht.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,t.innerHTML="",ht.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue}();var $t=et.documentElement,Xt=/^key/,Yt=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,zt=/^([^.]*)(?:\.(.+)|)/;dt.event={global:{},add:function(t,e,n,i,r){var o,s,a,l,u,c,f,h,d,p,g,m=Lt.get(t);if(m)for(n.handler&&(n=(o=n).handler,r=o.selector),r&&dt.find.matchesSelector($t,r),n.guid||(n.guid=dt.guid++),(l=m.events)||(l=m.events={}),(s=m.handle)||(s=m.handle=function(e){return void 0!==dt&&dt.event.triggered!==e.type?dt.event.dispatch.apply(t,arguments):void 0}),u=(e=(e||"").match(Dt)||[""]).length;u--;)d=g=(a=zt.exec(e[u])||[])[1],p=(a[2]||"").split(".").sort(),d&&(f=dt.event.special[d]||{},d=(r?f.delegateType:f.bindType)||d,f=dt.event.special[d]||{},c=dt.extend({type:d,origType:g,data:i,handler:n,guid:n.guid,selector:r,needsContext:r&&dt.expr.match.needsContext.test(r),namespace:p.join(".")},o),(h=l[d])||((h=l[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,i,p,s)||t.addEventListener&&t.addEventListener(d,s)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),r?h.splice(h.delegateCount++,0,c):h.push(c),dt.event.global[d]=!0)},remove:function(t,e,n,i,r){var o,s,a,l,u,c,f,h,d,p,g,m=Lt.hasData(t)&&Lt.get(t);if(m&&(l=m.events)){for(u=(e=(e||"").match(Dt)||[""]).length;u--;)if(a=zt.exec(e[u])||[],d=g=a[1],p=(a[2]||"").split(".").sort(),d){for(f=dt.event.special[d]||{},h=l[d=(i?f.delegateType:f.bindType)||d]||[],a=a[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=h.length;o--;)c=h[o],!r&&g!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||i&&i!==c.selector&&("**"!==i||!c.selector)||(h.splice(o,1),c.selector&&h.delegateCount--,f.remove&&f.remove.call(t,c));s&&!h.length&&(f.teardown&&!1!==f.teardown.call(t,p,m.handle)||dt.removeEvent(t,d,m.handle),delete l[d])}else for(d in l)dt.event.remove(t,d+e[u],n,i,!0);dt.isEmptyObject(l)&&Lt.remove(t,"handle events")}},dispatch:function(t){var e,n,i,r,o,s,a=dt.event.fix(t),l=new Array(arguments.length),u=(Lt.get(this,"events")||{})[a.type]||[],c=dt.event.special[a.type]||{};for(l[0]=a,e=1;e=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==t.type||!0!==u.disabled)){for(o=[],s={},n=0;n-1:dt.find(r,this,null,[u]).length),s[r]&&o.push(i);o.length&&a.push({elem:u,handlers:o})}return u=this,l\x20\t\r\n\f]*)[^>]*)\/>/gi,Zt=/
+
+