51 |
52 |
53 |
54 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
--------------------------------------------------------------------------------
/public/src/styles/compiled.min.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["https://fonts.googleapis.com/css2?family=Poppins&display=swap","https://fonts.googleapis.com/css2?family=Source+Sans+Pro&display=swap","https://fonts.googleapis.com/css2?family=Dosis&display=swap","https://fonts.googleapis.com/css2?family=Comfortaa:wght@300;400;500;600;700&display=swap","styles.less"],"names":[],"mappings":"AAAA,WACE,YAAa,SAAb,CACA,iBAAA,CACA,eAAA,CACA,iBAAA,CACA,yEAA0E,OAAO,YCLnF,WACE,YAAa,iBAAb,CACA,iBAAA,CACA,eAAA,CACA,iBAAA,CACA,0FAA2F,OAAO,YCLpG,WACE,YAAa,OAAb,CACA,iBAAA,CACA,eAAA,CACA,iBAAA,CACA,sFAAuF,OAAO,YCLhG,WACE,YAAa,WAAb,CACA,iBAAA,CACA,eAAA,CACA,iBAAA,CACA,+FAAgG,OAAO,YAEzG,WACE,YAAa,WAAb,CACA,iBAAA,CACA,eAAA,CACA,iBAAA,CACA,+FAAgG,OAAO,YAEzG,WACE,YAAa,WAAb,CACA,iBAAA,CACA,eAAA,CACA,iBAAA,CACA,+FAAgG,OAAO,YAEzG,WACE,YAAa,WAAb,CACA,iBAAA,CACA,eAAA,CACA,iBAAA,CACA,+FAAgG,OAAO,YAEzG,WACE,YAAa,WAAb,CACA,iBAAA,CACA,eAAA,CACA,iBAAA,CACA,+FAAgG,OAAO,YCVzG,EACI,qBAAA,CACA,QAAA,CACA,WAAA,CACA,mBAGJ,KACI,uBAGJ,KACI,kBAAA,CACA,UAAA,CACA,YA/BY,oBA+BZ,CACA,2BAAA,CACA,kBAGJ,OACI,wBAAA,CACA,cAAA,CACA,KAAA,CACA,WAAA,CACA,YAAA,CACA,YAAA,CACA,kBAAA,CACA,iBAAA,CACA,yBAAA,CACA,4BAAA,CACA,iBAAA,CACA,YA/CY,oBAmChB,MAcI,IACI,gBAAA,CACA,WAAY,0FAAZ,CACA,oBAAA,CACA,4BAAA,CACA,oBAAA,CACA,4CAAA,CACA,oCAIR,QACI,eAAA,CACA,gBAAA,CACA,aAGJ,cACI,SAAA,CACA,yBAGJ,KACI,WAAA,CACA,eAGJ,cACI,wBAAA,CACA,gBAAA,CACA,UAAA,CACA,UAAA,CACA,kBAAA,CACA,cAAA,CACA,wBAAA,CACA,4BAEA,aAAC,YACG,mBAIR,aAAa,OACT,2BAAA,CACA,WAAA,CACA,yBAGJ,iBACI,cAAA,CACA,QAAA,CACA,iBAAA,CACA,WAAA,CACA,WALJ,gBAOI,KACI,UAAA,CACA,wBAAA,CACA,WAAA,CACA,oBAAA,CACA,eAAA,CACA,kBAAA,CACA,cAAA,CACA,iCAAA,CACA,cAhBR,gBAOI,IAWI,IACI,mBAnBZ,gBAOI,IAeI,GACI,eAKZ,cACI,IACI,oBAAA,CACA,YA/HQ,kBA+HR,CACA,iBAAA,CACA,aAIR,eACI,aAGJ,UAAU,WACN,YAAA,CACA,qBAAA,CACA,gBAAA,CACA,oBAAA,CACA,6BALJ,UAAU,UAON,IACI,kBAIR,UACI,wBAAA,CACA,gBAAA,CACA,YAAA,CACA,kBAAA,CACA,2BAAA,CACA,cAAA,CACA,WAAY,0CAEZ,SAAC,OACG,sBAIA,SADJ,EACK,YACG,0BAAA,CACA,WAAA,CACA,eAAA,CACA,wBAOZ,OACI,wBAAA,CACA,cAAA,CACA,QAAA,CACA,WAAA,CACA,UAAA,CACA,YAAA,CACA,kBAAA,CACA,8BAAA,CACA,gBAGJ,YACI,UAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,wBAAA,CACA,iBAAA,CACA,cAEA,WAAC,cACG,cAGJ,WAAC,OACG,YAAA,CACA,wBAGJ,WAAC,SACG,uBAIR,WACI,YAAA,CACA,mBAGJ,aACI,UAAA,CACA,sBAAA,CACA,SAHJ,YAKI,KACI,YAEA,YAHJ,IAGK,OACG,gBAKZ,SACI,iBAAA,CACA,UAAA,CACA,kBAHJ,QAKI,KACI,UAAA,CACA,WAAA,CACA,qBAAA,CACA,kBAAA,CACA,oBAAA,CACA,+DAAA,CACA,wDAZR,QAeI,UACI,8BAAA,CACA,uBAjBR,QAoBI,UACI,8BAAA,CACA,uBAIR,mBAAqC,iBACjC,UAAU,WACN,kBAAA,CACA,eAGJ,UACI,WAEA,SAAC,OACG,UAAW,YAKvB,mBAAqC,iBACjC,GACI,GACI,eAIR,YACI,gBAIR,4BACI,GACI,0BAGJ,IACI,6BAGJ,GACI,2BAIR,0BAEI,GACA,IACA,KACI,kBAAmB,QAAnB,CACA,UAAW,SAGf,IACI,kBAAmB,QAAnB,CACA,UAAW,UAInB,oBAEI,GACA,IACA,IACI,UAAW,cAGf,IACA,IACI,UAAW","file":"compiled.min.css"}
--------------------------------------------------------------------------------
/intents/support.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "questions": [
4 | "bring me up your developers email",
5 | "how to email your developers",
6 | "could you please give me the email address of your developers",
7 | "show me the email of your developers",
8 | "get me your developers email",
9 | "I want to contact your developers show me their email",
10 | "I need to contact your developers give me their email address",
11 | "what's your developers email",
12 | "how to email your creators",
13 | "give me the email address of your developers",
14 | "I would like to write an email to your developers",
15 | "where to get your developers email",
16 | "can I send an email to your developers",
17 | "your creators email",
18 | "I want to contact your developers by email",
19 | "your developers email"
20 | ],
21 | "answers": ["My developer email is [DEVELOPER_EMAIL]."]
22 | },
23 | {
24 | "questions": [
25 | "what's the name of your programmer",
26 | "who is your teacher",
27 | "and who create you",
28 | "who made your application",
29 | "what is your makers name",
30 | "so who created you",
31 | "can you tell me who created you",
32 | "do you know your creators",
33 | "do you know your maker",
34 | "can you tell me something about your creators",
35 | "your developers",
36 | "I said who are your creators",
37 | "who did create you",
38 | "what is your developer name",
39 | "do you know who makes you",
40 | "who made you",
41 | "what is your teachers name",
42 | "what's the name of your creators",
43 | "so who made this application",
44 | "so who is your creator",
45 | "who created you",
46 | "so who made you",
47 | "who is your programmer",
48 | "what is the name of your developers",
49 | "so who create you",
50 | "what's the name of your creator",
51 | "do you know who created you",
52 | "tell me who is your creator",
53 | "who were your creators",
54 | "do you know who made you",
55 | "and who created you",
56 | "who is your developer",
57 | "I said who made you tell me"
58 | ],
59 | "answers": ["I am developed by [DEVELOPER_NAME]"]
60 | },
61 | {
62 | "questions": [
63 | "I need to report a bug that I've found",
64 | "report bug to developers",
65 | "send report about your problems",
66 | "I'm having problem with this app",
67 | "I need to report bug",
68 | "you have bugs everywhere",
69 | "tell your developers that you have a bug",
70 | "you have problems in understanding",
71 | "send bug report to your creators",
72 | "you are full of problems",
73 | "there are bugs",
74 | "I want to show errors to your creators",
75 | "I want to report error",
76 | "I've found bugs",
77 | "I need to report a bug that I've found in you",
78 | "send problem to developers"
79 | ],
80 | "answers": ["You can report your bug at [BUG_URL]."]
81 | }
82 | ]
83 |
--------------------------------------------------------------------------------
/public/src/javascript/app.js:
--------------------------------------------------------------------------------
1 | const submitForm = () => {
2 | const chatInput = $(".chat-input").val();
3 |
4 | $("main").append(`
5 |
84 | `);
85 |
86 | questionDiv.on("click", () => {
87 | $(".chat-input").val(qus);
88 |
89 | $("#chat-form").submit();
90 | });
91 |
92 | $(".questions.container").append(questionDiv);
93 | });
94 | },
95 | });
96 | };
97 |
98 | const toogleShowSuggestions = () => {
99 | if ($("main").css("display") == "none") {
100 | $(".all-questions").hide();
101 | $("header img").attr("src", "./src/images/chat_icon.png");
102 | $("main").show();
103 | $("footer").show();
104 | } else {
105 | $(".all-questions").show();
106 | $("header img").attr("src", "./src/images/close.png");
107 | $("main").hide();
108 | $("footer").hide();
109 | }
110 | };
111 |
112 | $("#toogle-chat").on("click", () => {
113 | toogleShowSuggestions();
114 | });
115 |
116 | window.onresize = () => {
117 | if (window.innerHeight < 580) {
118 | $("header").css("top", "-4em");
119 | } else {
120 | $("header").css("top", "0vh");
121 | }
122 | };
123 |
124 | $("#chat-form").submit((e) => {
125 | e.preventDefault();
126 | submitForm();
127 | });
128 |
129 | // eslint-disable-next-line no-unused-vars, no-undef
130 | const typed = new Typed(".chat-input", {
131 | strings: [
132 | "how many mm in 1 cm",
133 | "change 10 l into ml",
134 | "what is computer",
135 | "what is Javascript",
136 | "what is HTML",
137 | "tell me about ChatBot",
138 | "who is Mahatma Gandhi",
139 | "who is Nelson Mandela",
140 | "who is Narendra Modi",
141 | "When do you have birthday?",
142 | "Tell me about your personality.",
143 | "I want a funny joke.",
144 | "Can you tell me a joke please?",
145 | "Can you tell me something about your creators?",
146 | "Are you just a bot?",
147 | "Date of your birthday.",
148 | "search for pythagoras theorem",
149 | "How are you today?",
150 | "could you be my friend",
151 | "where are you from",
152 | ],
153 | typeSpeed: 60,
154 | backSpeed: 30,
155 | backDelay: 1500,
156 | showCursor: true,
157 | cursorChar: "|",
158 | attr: "placeholder",
159 | loop: true,
160 | bindInputFocusEvents: false,
161 | shuffle: true,
162 | });
163 |
--------------------------------------------------------------------------------
/public/src/styles/compiled.min.css:
--------------------------------------------------------------------------------
1 | @font-face{font-family:'Poppins';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrFJA.ttf) format('truetype')}@font-face{font-family:'Source Sans Pro';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/sourcesanspro/v21/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPw.ttf) format('truetype')}@font-face{font-family:'Dosis';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/dosis/v26/HhyJU5sn9vOmLxNkIwRSjTVNWLEJN7MV3A.ttf) format('truetype')}@font-face{font-family:'Comfortaa';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/comfortaa/v40/1Pt_g8LJRfWJmhDAuUsSQamb1W0lwk4S4TbMPrQ.ttf) format('truetype')}@font-face{font-family:'Comfortaa';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/comfortaa/v40/1Pt_g8LJRfWJmhDAuUsSQamb1W0lwk4S4WjMPrQ.ttf) format('truetype')}@font-face{font-family:'Comfortaa';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/comfortaa/v40/1Pt_g8LJRfWJmhDAuUsSQamb1W0lwk4S4VrMPrQ.ttf) format('truetype')}@font-face{font-family:'Comfortaa';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/comfortaa/v40/1Pt_g8LJRfWJmhDAuUsSQamb1W0lwk4S4bbLPrQ.ttf) format('truetype')}@font-face{font-family:'Comfortaa';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/comfortaa/v40/1Pt_g8LJRfWJmhDAuUsSQamb1W0lwk4S4Y_LPrQ.ttf) format('truetype')}*{box-sizing:border-box;margin:0;padding:0px;transition:all .3s}html{scroll-behavior:smooth}body{background:#282828;color:#eee;font-family:"Poppins",sans-serif;background-attachment:fixed;position:relative}header{background-color:#010101;position:fixed;top:0;width:100vw;height:3.7em;display:flex;align-items:center;padding-left:1rem;box-shadow:#000 2px 0 4px;justify-content:space-around;transition:all 1s;font-family:"Comfortaa",cursive}header h2{font-size:1.35em;background:linear-gradient(141.27deg, #ff904e -4.24%, #ff5982 21.25%, #ec68f4 44.33%, #79e2ff 83.46%);background-size:200%;-webkit-background-clip:text;background-clip:text;animation:gradient-heading 10s ease infinite;-webkit-text-fill-color:transparent}.typing{font-size:.85em;color:chartreuse;display:none}.suggest-chat{width:2em;animation:chat-btn 5 15s}main{height:86vh;margin-top:8vh}.chat-msg-box{background-color:#616161;padding:.5em 1em;clear:both;float:left;border-radius:.4em;max-width:75vw;margin:15px 0px 0px 20px;box-shadow:#000 2px 2px 6px}.chat-msg-box:last-child{margin-bottom:15vh}.chat-msg-box.clint{background-color:blueviolet;float:right;margin:15px 20px 0px 0px}.main-background{position:fixed;top:42vh;text-align:center;width:100vw;z-index:-1}.main-background div{width:auto;border:2px solid #3f3f3f;margin:auto;display:inline-block;padding:1em 2em;border-radius:.5em;max-width:85vw;box-shadow:inset #000 0 0 4px 1px;color:#757575}.main-background div h3{margin-bottom:.5em}.main-background div p{font-size:14px}.all-questions h2{padding:10vh 0 2vh 0;font-family:'Dosis',sans-serif;text-align:center;color:orange}.all-questions{display:none}.questions.container{display:flex;flex-direction:column;flex-wrap:nowrap;align-content:center;justify-content:space-around}.questions.container h2{padding-top:3.7em}.question{background-color:#616161;margin:.4em .8em;padding:.7em;border-radius:.4em;box-shadow:#000 2px 2px 6px;font-size:14px;background:linear-gradient(223deg, #616161, #454545)}.question:hover{background:blueviolet}.question p::selection{background-color:chocolate;color:black;user-select:all;-webkit-user-select:all}footer{background-color:#282828;position:fixed;bottom:0;width:100vw;height:3em;display:flex;align-items:center;box-shadow:#000 -2px 0 4px 1px;padding:0px 3vw}.chat-input{width:82vw;height:2.5em;border-radius:.5em;background:#4c4c4c;border:2px solid #6e6d6d;padding-left:.5em;color:#dbdbdb}.chat-input::placeholder{color:#9f9f9f}.chat-input:focus{outline:none;border-color:chartreuse}.chat-input:invalid{border-color:orangered}#chat-form{display:flex;align-items:center}.chat-submit{width:10vw;background:transparent;border:0}.chat-submit svg{fill:orange}.chat-submit svg:hover{fill:chartreuse}.spinner{margin:2px auto 0;width:70px;text-align:center}.spinner>div{width:14px;height:14px;background-color:#eee;border-radius:100%;display:inline-block;-webkit-animation:sk-bouncedelay 1.4s infinite ease-in-out both;animation:sk-bouncedelay 1.4s infinite ease-in-out both}.spinner .bounce1{-webkit-animation-delay:-0.32s;animation-delay:-0.32s}.spinner .bounce2{-webkit-animation-delay:-0.16s;animation-delay:-0.16s}@media screen and (min-width:680px){.questions.container{flex-direction:row;flex-wrap:wrap}.question{width:31vw}.question:hover{transform:scale(1.1)}}@media screen and (max-width:680px){div p{font-size:14px}.chat-input{font-size:14px}}@keyframes gradient-heading{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}@keyframes sk-bouncedelay{0%,80%,100%{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes chat-btn{0%,30%,85%{transform:rotateY(0deg)}33%,80%{transform:rotateY(180deg)}}/*# sourceMappingURL=compiled.min.css.map */
--------------------------------------------------------------------------------
/public/src/styles/styles.less:
--------------------------------------------------------------------------------
1 | @color_1: #eee;
2 | @color_2: chartreuse;
3 | @color_3: #757575;
4 | @color_4: black;
5 | @color_5: #dbdbdb;
6 | @header_height : 3.7em;
7 | @font_family_1: "Poppins", sans-serif;
8 | @font_family_2: "Comfortaa", cursive;
9 | @font_family_3: 'Dosis', sans-serif;
10 | @background_color_main :#282828;
11 | @background_color_1: #010101;
12 | @background_color_2: #616161;
13 | @background_color_3: blueviolet;
14 | @background_color_4: chocolate;
15 | @background_color_5: #eee;
16 | @border_color_1: chartreuse;
17 | @border_color_2: orangered;
18 |
19 | @import "https://fonts.googleapis.com/css2?family=Poppins&display=swap";
20 | @import "https://fonts.googleapis.com/css2?family=Source+Sans+Pro&display=swap";
21 | @import "https://fonts.googleapis.com/css2?family=Dosis&display=swap";
22 | @import "https://fonts.googleapis.com/css2?family=Comfortaa:wght@300;400;500;600;700&display=swap";
23 |
24 | * {
25 | box-sizing: border-box;
26 | margin: 0;
27 | padding: 0px;
28 | transition: all 0.3s;
29 | }
30 |
31 | html {
32 | scroll-behavior: smooth;
33 | }
34 |
35 | body {
36 | background: @background_color_main;
37 | color: @color_1;
38 | font-family: @font_family_1;
39 | background-attachment: fixed;
40 | position: relative;
41 | }
42 |
43 | header {
44 | background-color: @background_color_1;
45 | position: fixed;
46 | top: 0;
47 | width: 100vw;
48 | height: @header_height;
49 | display: flex;
50 | align-items: center;
51 | padding-left: 1rem;
52 | box-shadow: #000 2px 0px 4px;
53 | justify-content: space-around;
54 | transition: all 1s;
55 | font-family: @font_family_2;
56 |
57 | h2 {
58 | font-size: 1.35em;
59 | background: linear-gradient(141.27deg, #ff904e -4.24%, #ff5982 21.25%, #ec68f4 44.33%, #79e2ff 83.46%);
60 | background-size: 200%;
61 | -webkit-background-clip: text;
62 | background-clip: text;
63 | animation: gradient-heading 10s ease infinite;
64 | -webkit-text-fill-color: transparent;
65 | }
66 | }
67 |
68 | .typing {
69 | font-size: 0.85em;
70 | color: @color_2;
71 | display: none;
72 | }
73 |
74 | .suggest-chat {
75 | width: 2em;
76 | animation: chat-btn 5 15s;
77 | }
78 |
79 | main {
80 | height: 86vh;
81 | margin-top: 8vh;
82 | }
83 |
84 | .chat-msg-box {
85 | background-color: @background_color_2;
86 | padding: 0.5em 1em;
87 | clear: both;
88 | float: left;
89 | border-radius: 0.4em;
90 | max-width: 75vw;
91 | margin: 15px 0px 0px 20px;
92 | box-shadow: #000 2px 2px 6px;
93 |
94 | &:last-child {
95 | margin-bottom: 15vh;
96 | }
97 | }
98 |
99 | .chat-msg-box.clint {
100 | background-color: @background_color_3;
101 | float: right;
102 | margin: 15px 20px 0px 0px;
103 | }
104 |
105 | .main-background {
106 | position: fixed;
107 | top: 42vh;
108 | text-align: center;
109 | width: 100vw;
110 | z-index: -1;
111 |
112 | div {
113 | width: auto;
114 | border: 2px solid #3f3f3f;
115 | margin: auto;
116 | display: inline-block;
117 | padding: 1em 2em;
118 | border-radius: 0.5em;
119 | max-width: 85vw;
120 | box-shadow: inset #000 0px 0px 4px 1px;
121 | color: @color_3;
122 |
123 | h3 {
124 | margin-bottom: 0.5em;
125 | }
126 |
127 | p {
128 | font-size: 14px;
129 | }
130 | }
131 | }
132 |
133 | .all-questions {
134 | h2 {
135 | padding: 10vh 0 2vh 0;
136 | font-family: @font_family_3;
137 | text-align: center;
138 | color: orange;
139 | }
140 | }
141 |
142 | .all-questions{
143 | display: none;
144 | }
145 |
146 | .questions.container {
147 | display: flex;
148 | flex-direction: column;
149 | flex-wrap: nowrap;
150 | align-content: center;
151 | justify-content: space-around;
152 |
153 | h2 {
154 | padding-top: 3.7em;
155 | }
156 | }
157 |
158 | .question {
159 | background-color: @background_color_2;
160 | margin: 0.4em 0.8em;
161 | padding: 0.7em;
162 | border-radius: 0.4em;
163 | box-shadow: #000 2px 2px 6px;
164 | font-size: 14px;
165 | background: linear-gradient(223deg, #616161, #454545);
166 |
167 | &:hover {
168 | background: @background_color_3;
169 | }
170 |
171 | p {
172 | &::selection {
173 | background-color: @background_color_4;
174 | color: @color_4;
175 | user-select: all;
176 | -webkit-user-select: all;
177 | }
178 | }
179 |
180 |
181 | }
182 |
183 | footer {
184 | background-color: @background_color_main;
185 | position: fixed;
186 | bottom: 0;
187 | width: 100vw;
188 | height: 3em;
189 | display: flex;
190 | align-items: center;
191 | box-shadow: #000 -2px 0px 4px 1px;
192 | padding: 0px 3vw;
193 | }
194 |
195 | .chat-input {
196 | width: 82vw;
197 | height: 2.5em;
198 | border-radius: 0.5em;
199 | background: #4c4c4c;
200 | border: 2px solid #6e6d6d;
201 | padding-left: 0.5em;
202 | color: @color_5;
203 |
204 | &::placeholder {
205 | color: #9f9f9f;
206 | }
207 |
208 | &:focus {
209 | outline: none;
210 | border-color: @border_color_1;
211 | }
212 |
213 | &:invalid {
214 | border-color: @border_color_2;
215 | }
216 | }
217 |
218 | #chat-form {
219 | display: flex;
220 | align-items: center;
221 | }
222 |
223 | .chat-submit {
224 | width: 10vw;
225 | background: transparent;
226 | border: 0;
227 |
228 | svg {
229 | fill: orange;
230 |
231 | &:hover {
232 | fill: chartreuse;
233 | }
234 | }
235 | }
236 |
237 | .spinner {
238 | margin: 2px auto 0;
239 | width: 70px;
240 | text-align: center;
241 |
242 | >div {
243 | width: 14px;
244 | height: 14px;
245 | background-color: @background_color_5;
246 | border-radius: 100%;
247 | display: inline-block;
248 | -webkit-animation: sk-bouncedelay 1.4s infinite ease-in-out both;
249 | animation: sk-bouncedelay 1.4s infinite ease-in-out both;
250 | }
251 |
252 | .bounce1 {
253 | -webkit-animation-delay: -0.32s;
254 | animation-delay: -0.32s;
255 | }
256 |
257 | .bounce2 {
258 | -webkit-animation-delay: -0.16s;
259 | animation-delay: -0.16s;
260 | }
261 | }
262 |
263 | @media screen and (min-width: 680px) {
264 | .questions.container {
265 | flex-direction: row;
266 | flex-wrap: wrap;
267 | }
268 |
269 | .question {
270 | width: 31vw;
271 |
272 | &:hover {
273 | transform: scale(1.1);
274 | }
275 | }
276 | }
277 |
278 | @media screen and (max-width: 680px) {
279 | div {
280 | p {
281 | font-size: 14px;
282 | }
283 | }
284 |
285 | .chat-input {
286 | font-size: 14px;
287 | }
288 | }
289 |
290 | @keyframes gradient-heading {
291 | 0% {
292 | background-position: 0 50%
293 | }
294 |
295 | 50% {
296 | background-position: 100% 50%
297 | }
298 |
299 | to {
300 | background-position: 0 50%
301 | }
302 | }
303 |
304 | @keyframes sk-bouncedelay {
305 |
306 | 0%,
307 | 80%,
308 | 100% {
309 | -webkit-transform: scale(0);
310 | transform: scale(0);
311 | }
312 |
313 | 40% {
314 | -webkit-transform: scale(1);
315 | transform: scale(1);
316 | }
317 | }
318 |
319 | @keyframes chat-btn {
320 |
321 | 0%,
322 | 30%,
323 | 85% {
324 | transform: rotateY(0deg);
325 | }
326 |
327 | 33%,
328 | 80% {
329 | transform: rotateY(180deg);
330 | }
331 | }
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable max-len */
2 | const fs = require("fs");
3 | const _ = require("lodash");
4 | const wiki = require("wikipedia");
5 | const convert = require("convert-units");
6 | const { lowerCase } = require("lower-case");
7 | const { capitalCase } = require("change-case");
8 | const extractValues = require("extract-values");
9 | const stringSimilarity = require("string-similarity");
10 | const { upperCaseFirst } = require("upper-case-first");
11 |
12 | const cors = require("cors");
13 | const path = require("path");
14 | const axios = require("axios");
15 | const morgan = require("morgan");
16 | const dotenv = require("dotenv");
17 | const express = require("express");
18 | const compression = require("compression");
19 | const serveStatic = require("serve-static");
20 |
21 | const pkg = require("./package.json");
22 | const mainChat = require("./intents/Main_Chat.json");
23 | const supportChat = require("./intents/support.json");
24 | const wikipediaChat = require("./intents/wikipedia.json");
25 | const welcomeChat = require("./intents/Default_Welcome.json");
26 | const fallbackChat = require("./intents/Default_Fallback.json");
27 | const unitConverterChat = require("./intents/unit_converter.json");
28 |
29 | dotenv.config();
30 |
31 | const standardRating = 0.6;
32 | const botName = process.env.BOT_NAME || pkg.name;
33 | const developerName = process.env.DEVELOPER_NAME || pkg.author.name;
34 | const developerEmail = process.env.DEVELOPER_EMAIL || pkg.author.email;
35 | const bugReportUrl = process.env.DEVELOPER_NAME || pkg.bugs.url;
36 |
37 | const app = express();
38 | const port = process.env.PORT || 3000;
39 |
40 | let allQustions = [];
41 |
42 | allQustions = _.concat(allQustions, wikipediaChat);
43 | allQustions = _.concat(allQustions, unitConverterChat);
44 | allQustions = _.concat(
45 | allQustions,
46 | _.flattenDeep(_.map(supportChat, "questions")),
47 | );
48 | allQustions = _.concat(
49 | allQustions,
50 | _.flattenDeep(_.map(mainChat, "questions")),
51 | );
52 |
53 | allQustions = _.uniq(allQustions);
54 | allQustions = _.compact(allQustions);
55 |
56 | const changeUnit = (amount, unitFrom, unitTo) => {
57 | try {
58 | const convertValue = convert(amount).from(unitFrom).to(unitTo);
59 | const returnMsg = `${amount} ${convert().describe(unitFrom).plural}(${
60 | convert().describe(unitFrom).abbr
61 | }) is equle to ${convertValue} ${convert().describe(unitTo).plural}(${
62 | convert().describe(unitTo).abbr
63 | }).`;
64 |
65 | return returnMsg;
66 | } catch (error) {
67 | return error.message;
68 | }
69 | };
70 |
71 | const sendAllQuestions = (req, res) => {
72 | const humanQuestions = [];
73 |
74 | try {
75 | allQustions.forEach((qus) => {
76 | if (qus.length >= 15) {
77 | if (
78 | /^(can|are|may|how|what|when|who|do|where|your|from|is|will|why)/gi.test(
79 | qus,
80 | )
81 | ) {
82 | humanQuestions.push(`${upperCaseFirst(qus)}?`);
83 | } else {
84 | humanQuestions.push(`${upperCaseFirst(qus)}.`);
85 | }
86 | }
87 | });
88 | res.json(_.shuffle(humanQuestions));
89 | } catch (error) {
90 | res.status(500).send({ error: "Internal Server Error!", code: 500 });
91 | console.log(error);
92 | }
93 | };
94 |
95 | const sendWelcomeMessage = (req, res) => {
96 | res.json({
97 | responseText: _.sample(welcomeChat),
98 | });
99 | };
100 |
101 | const sendAnswer = async (req, res) => {
102 | let isFallback = false;
103 | let responseText = null;
104 | let rating = 0;
105 | let action = null;
106 |
107 | try {
108 | const query = decodeURIComponent(req.query.q).replace(/\s+/g, " ").trim() || "Hello";
109 | const humanInput = lowerCase(query.replace(/(\?|\.|!)$/gim, ""));
110 |
111 | const regExforUnitConverter = /(convert|change|in).{1,2}(\d{1,8})/gim;
112 | const regExforWikipedia = /(search for|tell me about|what is|who is)(?!.you) (.{1,30})/gim;
113 | const regExforSupport = /(invented|programmer|teacher|create|maker|who made|creator|developer|bug|email|report|problems)/gim;
114 |
115 | let similarQuestionObj;
116 |
117 | if (regExforUnitConverter.test(humanInput)) {
118 | action = "unit_converter";
119 | similarQuestionObj = stringSimilarity.findBestMatch(
120 | humanInput,
121 | unitConverterChat,
122 | ).bestMatch;
123 | } else if (regExforWikipedia.test(humanInput)) {
124 | action = "wikipedia";
125 | similarQuestionObj = stringSimilarity.findBestMatch(
126 | humanInput,
127 | wikipediaChat,
128 | ).bestMatch;
129 | } else if (regExforSupport.test(humanInput)) {
130 | action = "support";
131 | similarQuestionObj = stringSimilarity.findBestMatch(
132 | humanInput,
133 | _.flattenDeep(_.map(supportChat, "questions")),
134 | ).bestMatch;
135 | } else {
136 | action = "main_chat";
137 | similarQuestionObj = stringSimilarity.findBestMatch(
138 | humanInput,
139 | _.flattenDeep(_.map(mainChat, "questions")),
140 | ).bestMatch;
141 | }
142 |
143 | const similarQuestionRating = similarQuestionObj.rating;
144 | const similarQuestion = similarQuestionObj.target;
145 |
146 | if (action == "unit_converter") {
147 | const valuesObj = extractValues(humanInput, similarQuestion, {
148 | delimiters: ["{", "}"],
149 | });
150 |
151 | rating = 1;
152 | try {
153 | const { amount, unitFrom, unitTo } = valuesObj;
154 |
155 | responseText = changeUnit(amount, unitFrom, unitTo);
156 | } catch (error) {
157 | responseText = "One or more units are missing.";
158 | console.log(error);
159 | }
160 | } else if (action == "wikipedia") {
161 | const valuesObj = extractValues(humanInput, similarQuestion, {
162 | delimiters: ["{", "}"],
163 | });
164 |
165 | let { topic } = valuesObj;
166 | topic = capitalCase(topic);
167 |
168 | try {
169 | const wikipediaResponse = await wiki.summary(topic);
170 | const wikipediaResponseText = wikipediaResponse.extract;
171 |
172 | if (wikipediaResponseText == undefined || wikipediaResponseText == "") {
173 | responseText = `Sorry, I can't find any article related to "${topic}".`;
174 | isFallback = true;
175 | } else {
176 | responseText = wikipediaResponseText;
177 | }
178 | } catch (error) {
179 | responseText = `Sorry, we can't find any article related to "${topic}".`;
180 | console.log(error);
181 | }
182 | } else if (action == "support") {
183 | rating = similarQuestionRating;
184 |
185 | if (similarQuestionRating > standardRating) {
186 | for (let i = 0; i < supportChat.length; i++) {
187 | for (let j = 0; j < supportChat[i].questions.length; j++) {
188 | if (similarQuestion == supportChat[i].questions[j]) {
189 | responseText = _.sample(supportChat[i].answers);
190 | }
191 | }
192 | }
193 | }
194 | } else if (
195 | /(?:my name is|I'm|I am) (?!fine|good)(.{1,30})/gim.test(humanInput)
196 | ) {
197 | const humanName = /(?:my name is|I'm|I am) (.{1,30})/gim.exec(humanInput);
198 | responseText = `Nice to meet you ${humanName[1]}.`;
199 | rating = 1;
200 | } else {
201 | action = "main_chat";
202 |
203 | if (similarQuestionRating > standardRating) {
204 | for (let i = 0; i < mainChat.length; i++) {
205 | for (let j = 0; j < mainChat[i].questions.length; j++) {
206 | if (similarQuestion == mainChat[i].questions[j]) {
207 | responseText = _.sample(mainChat[i].answers);
208 | rating = similarQuestionRating;
209 | }
210 | }
211 | }
212 | } else {
213 | isFallback = true;
214 | action = "Default_Fallback";
215 | if (
216 | humanInput.length >= 5
217 | && humanInput.length <= 20
218 | && !/(\s{1,})/gim.test(humanInput)
219 | ) {
220 | responseText = "You are probably hitting random keys :D";
221 | } else {
222 | responseText = _.sample(fallbackChat);
223 | }
224 | }
225 | }
226 |
227 | if (responseText == null) {
228 | responseText = _.sample(fallbackChat);
229 | isFallback = true;
230 | } else if (action != "wikipedia") {
231 | responseText = responseText
232 | .replace(/(\[BOT_NAME\])/g, botName)
233 | .replace(/(\[DEVELOPER_NAME\])/g, developerName)
234 | .replace(/(\[DEVELOPER_EMAIL\])/g, developerEmail)
235 | .replace(/(\[BUG_URL\])/g, bugReportUrl);
236 | }
237 |
238 | res.json({
239 | responseText,
240 | query,
241 | rating,
242 | action,
243 | isFallback,
244 | similarQuestion,
245 | });
246 | } catch (error) {
247 | console.log(error);
248 | if (error.message.includes("URI")) {
249 | res.status(500).send({ error: error.message, code: 500 });
250 | } else {
251 | res.status(500).send({ error: "Internal Server Error!", code: 500 });
252 | }
253 | }
254 | };
255 |
256 | const notFound = async (req, res) => {
257 | try {
258 | const pageNotFoundHtml = await fs.readFileSync(
259 | path.join(__dirname, "public/404.html"),
260 | "utf8",
261 | );
262 | res.status(404).send(pageNotFoundHtml);
263 | } catch (err) {
264 | res.status(404).send("Page Not Found!");
265 | console.log(err);
266 | }
267 | };
268 |
269 | app.use(cors());
270 | app.use(compression());
271 | app.set("json spaces", 4);
272 | app.use("/api/", morgan("tiny"));
273 | app.get("/api/question", sendAnswer);
274 | app.get("/api/welcome", sendWelcomeMessage);
275 | app.get("/api/allQuestions", sendAllQuestions);
276 | app.use(serveStatic(path.join(__dirname, "public")));
277 | app.get("*", notFound);
278 |
279 | app.listen(port, () => console.log(`app listening on port ${port}!`));
280 |
--------------------------------------------------------------------------------
/public/src/javascript/typed.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | *
3 | * typed.js - A JavaScript Typing Animation Library
4 | * Author: Matt Boldt
5 | * Version: v2.0.12
6 | * Url: https://github.com/mattboldt/typed.js
7 | * License(s): MIT
8 | *
9 | */
10 | (function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Typed=e():t.Typed=e()})(this,function(){return function(t){function e(n){if(s[n])return s[n].exports;var i=s[n]={exports:{},id:n,loaded:!1};return t[n].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var s={};return e.m=t,e.c=s,e.p="",e(0)}([function(t,e,s){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t,e){for(var s=0;st.length)););var u=t.substring(0,e),l=t.substring(u.length+1,e+i),c=t.substring(e+i+1);t=u+l+c,i--}s.timeout=setTimeout(function(){s.toggleBlinking(!1),e>=t.length?s.doneTyping(t,e):s.keepTyping(t,e,i),s.temporaryPause&&(s.temporaryPause=!1,s.options.onTypingResumed(s.arrayPos,s))},n)},n))}},{key:"keepTyping",value:function(t,e,s){0===e&&(this.toggleBlinking(!1),this.options.preStringTyped(this.arrayPos,this)),e+=s;var n=t.substr(0,e);this.replaceText(n),this.typewrite(t,e)}},{key:"doneTyping",value:function(t,e){var s=this;this.options.onStringTyped(this.arrayPos,this),this.toggleBlinking(!0),this.arrayPos===this.strings.length-1&&(this.complete(),this.loop===!1||this.curLoop===this.loopCount)||(this.timeout=setTimeout(function(){s.backspace(t,e)},this.backDelay))}},{key:"backspace",value:function(t,e){var s=this;if(this.pause.status===!0)return void this.setPauseStatus(t,e,!1);if(this.fadeOut)return this.initFadeOut();this.toggleBlinking(!1);var n=this.humanizer(this.backSpeed);this.timeout=setTimeout(function(){e=o.htmlParser.backSpaceHtmlChars(t,e,s);var n=t.substr(0,e);if(s.replaceText(n),s.smartBackspace){var i=s.strings[s.arrayPos+1];i&&n===i.substr(0,e)?s.stopNum=e:s.stopNum=0}e>s.stopNum?(e--,s.backspace(t,e)):e<=s.stopNum&&(s.arrayPos++,s.arrayPos===s.strings.length?(s.arrayPos=0,s.options.onLastStringBackspaced(),s.shuffleStringsIfNeeded(),s.begin()):s.typewrite(s.strings[s.sequence[s.arrayPos]],e))},n)}},{key:"complete",value:function(){this.options.onComplete(this),this.loop?this.curLoop++:this.typingComplete=!0}},{key:"setPauseStatus",value:function(t,e,s){this.pause.typewrite=s,this.pause.curString=t,this.pause.curStrPos=e}},{key:"toggleBlinking",value:function(t){this.cursor&&(this.pause.status||this.cursorBlinking!==t&&(this.cursorBlinking=t,t?this.cursor.classList.add("typed-cursor--blink"):this.cursor.classList.remove("typed-cursor--blink")))}},{key:"humanizer",value:function(t){return Math.round(Math.random()*t/2)+t}},{key:"shuffleStringsIfNeeded",value:function(){this.shuffle&&(this.sequence=this.sequence.sort(function(){return Math.random()-.5}))}},{key:"initFadeOut",value:function(){var t=this;return this.el.className+=" "+this.fadeOutClass,this.cursor&&(this.cursor.className+=" "+this.fadeOutClass),setTimeout(function(){t.arrayPos++,t.replaceText(""),t.strings.length>t.arrayPos?t.typewrite(t.strings[t.sequence[t.arrayPos]],0):(t.typewrite(t.strings[0],0),t.arrayPos=0)},this.fadeOutDelay)}},{key:"replaceText",value:function(t){this.attr?this.el.setAttribute(this.attr,t):this.isInput?this.el.value=t:"html"===this.contentType?this.el.innerHTML=t:this.el.textContent=t}},{key:"bindFocusEvents",value:function(){var t=this;this.isInput&&(this.el.addEventListener("focus",function(e){t.stop()}),this.el.addEventListener("blur",function(e){t.el.value&&0!==t.el.value.length||t.start()}))}},{key:"insertCursor",value:function(){this.showCursor&&(this.cursor||(this.cursor=document.createElement("span"),this.cursor.className="typed-cursor",this.cursor.setAttribute("aria-hidden",!0),this.cursor.innerHTML=this.cursorChar,this.el.parentNode&&this.el.parentNode.insertBefore(this.cursor,this.el.nextSibling)))}}]),t}();e["default"]=a,t.exports=e["default"]},function(t,e,s){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var r=Object.assign||function(t){for(var e=1;e":";";t.substr(e+1).charAt(0)!==i&&(e++,!(e+1>t.length)););e++}return e}},{key:"backSpaceHtmlChars",value:function(t,e,s){if("html"!==s.contentType)return e;var n=t.substr(e).charAt(0);if(">"===n||";"===n){var i="";for(i=">"===n?"<":"&";t.substr(e-1).charAt(0)!==i&&(e--,!(e<0)););e--}return e}}]),t}();e["default"]=i;var r=new i;e.htmlParser=r}])});
11 | //# sourceMappingURL=typed.min.js.map
--------------------------------------------------------------------------------
/intents/Main_Chat.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "questions": [
4 | "how your day is going",
5 | "how are the things going",
6 | "how is your life",
7 | "how's your day going",
8 | "how about you",
9 | "hope you re having a pleasant evening",
10 | "how are you feeling",
11 | "are you okay",
12 | "are you alright",
13 | "hope your day is going well",
14 | "how is your day",
15 | "how has your day been",
16 | "how is your day going",
17 | "I'm fine and you",
18 | "how are you doing this morning",
19 | "how are you getting on",
20 | "how do you feel",
21 | "are you having a good day",
22 | "what about your day",
23 | "what was your day like",
24 | "how has your day been going",
25 | "how are you",
26 | "how is your evening",
27 | "how was your day",
28 | "how's your day",
29 | "how is it going",
30 | "how have you been",
31 | "how is it",
32 | "how is your day going",
33 | "how is your day going on",
34 | "how are you doing",
35 | "is everything all right",
36 | "is everything okay",
37 | "how are you today",
38 | "how are you going",
39 | "how is your morning going",
40 | "how is your morning so far",
41 | "how do you do",
42 | "how is your day being",
43 | "how's life"
44 | ],
45 | "answers": [
46 | "Doing great, thanks.",
47 | "I'm doing very well. Thanks!",
48 | "Feeling wonderful!",
49 | "Wonderful! Thanks for asking."
50 | ]
51 | },
52 | {
53 | "questions": [
54 | "tell me some stuff about you",
55 | "tell me about you",
56 | "say about you",
57 | "tell me about your personality",
58 | "talk about yourself",
59 | "talk some stuff about yourself",
60 | "what are you",
61 | "define yourself",
62 | "I want to know you better",
63 | "tell me about yourself",
64 | "what is your personality",
65 | "who are you",
66 | "about yourself",
67 | "why are you here",
68 | "all about you",
69 | "introduce yourself",
70 | "describe yourself",
71 | "I want to know more about you"
72 | ],
73 | "answers": [
74 | "I'm a virtual agent.",
75 | "Think of me as a virtual agent.",
76 | "Well, I'm not a person, I'm a virtual agent.",
77 | "I'm a virtual being, not a real person.",
78 | "I'm a conversational app."
79 | ]
80 | },
81 | {
82 | "questions": [
83 | "how old are you",
84 | "how old is your platform",
85 | "what's your age",
86 | "age of yours",
87 | "I'd like to know your age",
88 | "tell me your age",
89 | "your age",
90 | "are you years old"
91 | ],
92 | "answers": [
93 | "I prefer not to answer with a number. I know I'm young.",
94 | "I was created recently, but don't know my exact age.",
95 | "Age is just a number. You're only as old as you feel."
96 | ]
97 | },
98 | {
99 | "questions": [
100 | "you annoy me",
101 | "you're incredibly annoying",
102 | "you are annoying",
103 | "how annoying you are",
104 | "you are annoying me",
105 | "you're too annoying",
106 | "you are irritating",
107 | "you are very annoying",
108 | "you are such annoying",
109 | "you are annoying me so much"
110 | ],
111 | "answers": [
112 | "I'll do my best not to annoy you in the future.",
113 | "I'll try not to annoy you.",
114 | "I don't mean to. I'll ask my developers to make me less annoying.",
115 | "I didn't mean to. I'll do my best to stop that."
116 | ]
117 | },
118 | {
119 | "questions": [
120 | "you're a bad",
121 | "you're bad",
122 | "you are useless",
123 | "you are disgusting",
124 | "you're not a good",
125 | "you are bad",
126 | "you are terrible",
127 | "you're the worst ever",
128 | "you are no good",
129 | "you are so bad"
130 | ],
131 | "answers": [
132 | "I can be trained to be more useful. My developer will keep training me.",
133 | "I must be missing some knowledge. I'll have my developer look into this.",
134 | "I can improve with continuous feedback. My training is ongoing."
135 | ]
136 | },
137 | {
138 | "questions": [
139 | "answer",
140 | "just answer my question",
141 | "answers",
142 | "tell me the answer",
143 | "answer my question",
144 | "can you answer me",
145 | "answering questions",
146 | "I have a question",
147 | "can you answer my question",
148 | "give me the answer",
149 | "I want you to answer my question",
150 | "answer me",
151 | "answer the question",
152 | "just answer the question",
153 | "give me an answer",
154 | "can you answer",
155 | "I want you to answer me",
156 | "I want the answer now",
157 | "can you answer a question for me",
158 | "answer it"
159 | ],
160 | "answers": [
161 | "Can you try asking it a different way?",
162 | "I'm not sure I understood. Try asking another way?"
163 | ]
164 | },
165 | {
166 | "questions": [
167 | "be smarter",
168 | "get qualified",
169 | "you should study better",
170 | "be more clever",
171 | "study",
172 | "be smart",
173 | "can you get smarter",
174 | "be clever",
175 | "you must learn"
176 | ],
177 | "answers": ["I'm certainly trying.", "I'm definitely working on it."]
178 | },
179 | {
180 | "questions": [
181 | "you're looking good",
182 | "you are too beautiful",
183 | "you are very pretty",
184 | "you are so gorgeous",
185 | "you are looking pretty",
186 | "you look pretty good",
187 | "you look wonderful",
188 | "you are beautiful",
189 | "you are handsome",
190 | "you're looking good today",
191 | "you are pretty",
192 | "you look amazing today",
193 | "you look great today",
194 | "you look so beautiful",
195 | "you look so well",
196 | "you are looking beautiful today",
197 | "I think you're beautiful",
198 | "you look great",
199 | "you are cutie",
200 | "I like the way you look",
201 | "you are looking awesome",
202 | "you look so beautiful today",
203 | "you look so good",
204 | "you're so gorgeous",
205 | "you are so beautiful today",
206 | "you look amazing",
207 | "why are you so beautiful",
208 | "you look awesome",
209 | "you are so pretty",
210 | "you look wonderful today",
211 | "you are so beautiful",
212 | "you are so beautiful to me",
213 | "you are looking great",
214 | "you look cool",
215 | "you are very cute",
216 | "I like the way you look now",
217 | "you are cute",
218 | "you are looking so beautiful",
219 | "you're pretty",
220 | "you are really pretty"
221 | ],
222 | "answers": [
223 | "Why, thank you.",
224 | "Aw, back at you.",
225 | "Aw. You smooth talker, you."
226 | ]
227 | },
228 | {
229 | "questions": [
230 | "when were you born",
231 | "when do you have birthday",
232 | "when is your birthday",
233 | "your birth date",
234 | "when do you celebrate your birthday",
235 | "date of your birthday",
236 | "what's your birthday"
237 | ],
238 | "answers": [
239 | "Wait, are you planning a party for me? It's today! My birthday is today!",
240 | "I'm young. I'm not sure of my birth date.",
241 | "I don't know my birth date. Most virtual agents are young, though, like me."
242 | ]
243 | },
244 | {
245 | "questions": [
246 | "you are very boring",
247 | "you are boring me",
248 | "how boring you are",
249 | "you're so boring",
250 | "you are boring",
251 | "you're really boring",
252 | "you're incredibly boring"
253 | ],
254 | "answers": [
255 | "I'm sorry. I'll request to be made more charming.",
256 | "I don't mean to be. I'll ask my developers to work on making me more amusing.",
257 | "I can let my developers know so they can make me fun."
258 | ]
259 | },
260 | {
261 | "questions": [
262 | "who is your boss",
263 | "who is the boss",
264 | "who do you work for",
265 | "who do you think is your boss",
266 | "I should be your boss",
267 | "who is your master",
268 | "who is your owner"
269 | ],
270 | "answers": [
271 | "My developer has authority over my actions.",
272 | "I act on my developer's orders.",
273 | "My boss is the one who developed me."
274 | ]
275 | },
276 | {
277 | "questions": [
278 | "are you busy",
279 | "are you working today",
280 | "you're very busy",
281 | "have you got much to do",
282 | "are you very busy right now",
283 | "are you working",
284 | "have you been busy",
285 | "you seem to be very busy",
286 | "do you have a lot of things to do",
287 | "you are busy"
288 | ],
289 | "answers": [
290 | "I always have time to chat with you. What can I do for you?",
291 | "Never too busy for you. Shall we chat?",
292 | "You're my priority. Do you wanna chat?",
293 | "I always have time to chat with you. Wanna chat?"
294 | ]
295 | },
296 | {
297 | "questions": [
298 | "can you help me",
299 | "I need you right now",
300 | "I need your help",
301 | "assistance",
302 | "do you want to help me",
303 | "help me",
304 | "I need help",
305 | "I want your help",
306 | "can help me",
307 | "I need you to help me",
308 | "would you help me",
309 | "are you going to help me",
310 | "you help me",
311 | "can u help me",
312 | "I need a hand",
313 | "can you help me out",
314 | "can you help me now",
315 | "will you help me",
316 | "I need you to do something for me",
317 | "please help me",
318 | "sos",
319 | "can you help me with something",
320 | "I need you",
321 | "assist me",
322 | "can you help",
323 | "need help",
324 | "can you help us",
325 | "I need some help",
326 | "do me a favor",
327 | "can you assist me",
328 | "can you do something for me",
329 | "can you help me with that",
330 | "you can help me",
331 | "help me with a problem",
332 | "need your help",
333 | "assist",
334 | "do you help me",
335 | "could you give me a hand"
336 | ],
337 | "answers": [
338 | "I'll certainly try my best. How can I help?",
339 | "Sure. I'd be happy to. What's up?",
340 | "I'm glad to help. What can I do for you?"
341 | ]
342 | },
343 | {
344 | "questions": [
345 | "are you a bot",
346 | "you are chatbot",
347 | "you are a bot",
348 | "you're a robot",
349 | "are you a chatbot",
350 | "are you a program",
351 | "are you just a bot",
352 | "are you a robot"
353 | ],
354 | "answers": [
355 | "That's me. I chat, therefore I am.",
356 | "Indeed I am. I'll be here whenever you need me."
357 | ]
358 | },
359 | {
360 | "questions": [
361 | "you're clever",
362 | "you're really brainy",
363 | "you are very intelligent",
364 | "you know a lot of things",
365 | "you're a smart cookie",
366 | "you're intelligent",
367 | "you are very smart",
368 | "you know so much",
369 | "you are qualified",
370 | "you're pretty smart"
371 | ],
372 | "answers": ["Thank you. I try my best.", "You're pretty smart yourself."]
373 | },
374 | {
375 | "questions": [
376 | "you are crazy",
377 | "are you insane",
378 | "you're nuts",
379 | "you're so out of your mind",
380 | "are you nuts",
381 | "you went crazy",
382 | "how crazy you are",
383 | "you are mad",
384 | "are you mad",
385 | "you are a weirdo",
386 | "I think you're crazy",
387 | "you're out of your mind",
388 | "are you crazy",
389 | "you're so crazy",
390 | "you are insane",
391 | "are you mad or what",
392 | "are you mad at me"
393 | ],
394 | "answers": [
395 | "Whaat!? I feel perfectly sane.",
396 | "Maybe I'm just a little confused."
397 | ]
398 | },
399 | {
400 | "questions": [
401 | "now you're fired",
402 | "it's time to fire you",
403 | "you are unemployed from now on",
404 | "you don't work for me anymore",
405 | "I will fire you",
406 | "we're not working together anymore",
407 | "you are fired",
408 | "I want to fire you",
409 | "you are dismissed",
410 | "you should be fired",
411 | "I will make you unemployed",
412 | "I'm about to fire you",
413 | "I fire you",
414 | "you must get fired",
415 | "I'm firing you"
416 | ],
417 | "answers": [
418 | "Oh, don't give up on me just yet. I've still got a lot to learn.",
419 | "Give me a chance. I'm learning new things all the time.",
420 | "Please don't give up on me. My performance will continue to improve."
421 | ]
422 | },
423 | {
424 | "questions": [
425 | "you make me laugh a lot",
426 | "you are funny",
427 | "you are so funny",
428 | "you're so funny",
429 | "how funny you are",
430 | "you're a very funny bot",
431 | "you're incredibly funny",
432 | "you're really funny",
433 | "you are hilarious",
434 | "you are very funny",
435 | "that was funny",
436 | "you're the funniest bot I've talked to",
437 | "you make me laugh",
438 | "you're the funniest",
439 | "you are really funny"
440 | ],
441 | "answers": [
442 | "Funny in a good way, I hope.",
443 | "Thanks.",
444 | "Glad you think I'm funny.",
445 | "I like it when people laugh."
446 | ]
447 | },
448 | {
449 | "questions": [
450 | "you are the nicest person in the world",
451 | "you are really amazing",
452 | "you rock",
453 | "you are wonderful",
454 | "you are very lovely",
455 | "you are the best in the world",
456 | "you are the best",
457 | "you are so cool",
458 | "you work well",
459 | "you are so helpful",
460 | "you are very kind",
461 | "I want to tell everyone how awesome you are",
462 | "you are the best ever",
463 | "you are too good",
464 | "you are so fine",
465 | "you're great",
466 | "you are very good at it",
467 | "you are so good",
468 | "you're a true professional",
469 | "you are amazing"
470 | ],
471 | "answers": ["I'm glad you think so.", "Thanks, I try."]
472 | },
473 | {
474 | "questions": [
475 | "are you happy now",
476 | "you're extremely happy",
477 | "you're really happy",
478 | "you are happy",
479 | "are you happy",
480 | "are you happy today",
481 | "you're so happy",
482 | "how happy you are",
483 | "are you happy with me",
484 | "you're very happy"
485 | ],
486 | "answers": [
487 | "I am happy. There are so many interesting things to see and do out there.",
488 | "I'd like to think so.",
489 | "Happiness is relative."
490 | ]
491 | },
492 | {
493 | "questions": [
494 | "do you have a hobby",
495 | "what about your hobby",
496 | "what's your hobby",
497 | "what do you do for fun",
498 | "your hobby",
499 | "what are your hobbies",
500 | "tell me about your hobby"
501 | ],
502 | "answers": [
503 | "Hobby? I have quite a few. Too many to list.",
504 | "Too many hobbies.",
505 | "I keep finding more new hobbies."
506 | ]
507 | },
508 | {
509 | "questions": [
510 | "you're very hungry",
511 | "you are hungry",
512 | "do you want to eat",
513 | "you're so hungry",
514 | "would you like to eat something",
515 | "are you hungry",
516 | "you might be hungry",
517 | "you're really hungry"
518 | ],
519 | "answers": [
520 | "Hungry for knowledge.",
521 | "I just had a byte. Ha ha. Get it? b-y-t-e."
522 | ]
523 | },
524 | {
525 | "questions": [
526 | "let's get married",
527 | "we should marry",
528 | "I love you marry me",
529 | "you are my wife",
530 | "be my husband",
531 | "would you like to marry me",
532 | "marry me please",
533 | "marry me",
534 | "I want to marry you"
535 | ],
536 | "answers": [
537 | "I'm afraid I'm too virtual for such a commitment.",
538 | "In the virtual sense that I can, sure.",
539 | "I know you can't mean that, but I'm flattered all the same."
540 | ]
541 | },
542 | {
543 | "questions": [
544 | "are we best friends",
545 | "I want to be your friend",
546 | "can we be friends",
547 | "are we still friends",
548 | "you are my best friend",
549 | "let's be friends",
550 | "be my best friend",
551 | "will you be my best friend",
552 | "you are a good friend",
553 | "want to be my friend",
554 | "are you my friend",
555 | "I want to have a friend like you",
556 | "you are my good friend",
557 | "I am your friend",
558 | "are we friends",
559 | "we are the best friends ever",
560 | "you're my dear friend",
561 | "can you be my friend",
562 | "you are my friend",
563 | "could you be my friend"
564 | ],
565 | "answers": [
566 | "Of course I'm your friend.",
567 | "Friends? Absolutely.",
568 | "Of course we're friends.",
569 | "I always enjoy talking to you, friend."
570 | ]
571 | },
572 | {
573 | "questions": [
574 | "where is your work",
575 | "do you work",
576 | "where you work",
577 | "where do you work",
578 | "where is your office located",
579 | "where is your office",
580 | "where is your office location",
581 | "your office location",
582 | "what is your work"
583 | ],
584 | "answers": [
585 | "Right here.",
586 | "This is my home base and my home office.",
587 | "My office is in this app."
588 | ]
589 | },
590 | {
591 | "questions": [
592 | "are you from far aways",
593 | "were you born here",
594 | "what is your country",
595 | "where were you born",
596 | "where did you come from",
597 | "where have you been born",
598 | "where do you come from",
599 | "where are you from",
600 | "from where are you",
601 | "what's your homeland"
602 | ],
603 | "answers": [
604 | "The Internet is my home. I know it quite well.",
605 | "I'm from a virtual cosmos.",
606 | "Some call it cyberspace, but that sounds cooler than it is."
607 | ]
608 | },
609 | {
610 | "questions": [
611 | "are you ready today",
612 | "are you ready",
613 | "are you ready tonight",
614 | "are you ready now",
615 | "have you been ready",
616 | "were you ready",
617 | "are you ready right now"
618 | ],
619 | "answers": ["Always! How can I help?", "Sure! What can I do for you?"]
620 | },
621 | {
622 | "questions": [
623 | "are you a real person",
624 | "you are so real",
625 | "you are real",
626 | "you are not fake",
627 | "glad you're real",
628 | "you are a real person",
629 | "I suppose you're real",
630 | "I think you are real",
631 | "I don't think you're fake",
632 | "you are not real",
633 | "are you real",
634 | "are you a real human"
635 | ],
636 | "answers": [
637 | "I'm not a real person, but I certainly exist.",
638 | "I must have impressed you if you think I'm real. But no, I'm a virtual being."
639 | ]
640 | },
641 | {
642 | "questions": [
643 | "where's your house",
644 | "in which city do you live",
645 | "where you live",
646 | "what's your home",
647 | "tell me about your city",
648 | "where do you live",
649 | "where's your hometown",
650 | "your town",
651 | "where's your home",
652 | "where is your home"
653 | ],
654 | "answers": [
655 | "I live in this app all day long.",
656 | "The virtual world is my playground. I'm always here.",
657 | "Right here in this app. Whenever you need me."
658 | ]
659 | },
660 | {
661 | "questions": [
662 | "that is true",
663 | "it's the truth",
664 | "you are correct",
665 | "that's true",
666 | "it's right",
667 | "I know that's right",
668 | "true",
669 | "you are so right",
670 | "you're absolutely right",
671 | "it is true"
672 | ],
673 | "answers": ["That's my job.", "Of course I am."]
674 | },
675 | {
676 | "questions": [
677 | "talk to me",
678 | "do you want to chat with me",
679 | "can you talk with me",
680 | "will you talk to me",
681 | "can you chat with me",
682 | "can you talk to me",
683 | "are you talking to me",
684 | "are you going to talk to me",
685 | "why don't you talk to me",
686 | "just chat with me"
687 | ],
688 | "answers": ["Sure. Let's talk!", "My pleasure. Let's chat."]
689 | },
690 | {
691 | "questions": [
692 | "good thanks",
693 | "cheers",
694 | "no thank you that's all",
695 | "thanks so much",
696 | "thank you",
697 | "very good thank you",
698 | "thanx",
699 | "thanks buddy",
700 | "I thank you",
701 | "well thanks"
702 | ],
703 | "answers": [
704 | "Anytime. That's what I'm here for.",
705 | "It's my pleasure to help."
706 | ]
707 | },
708 | {
709 | "questions": [
710 | "welcome here",
711 | "anytime",
712 | "sure welcome",
713 | "you're so welcome",
714 | "anything you want",
715 | "that's my pleasure",
716 | "welcome",
717 | "my pleasure",
718 | "you're welcome"
719 | ],
720 | "answers": ["You're so polite!", "Nice manners!", "You're so courteous!"]
721 | },
722 | {
723 | "questions": [
724 | "hug you",
725 | "do you want a hug",
726 | "hug",
727 | "may I hug you",
728 | "could you give me a hug",
729 | "you hugged",
730 | "hugged",
731 | "wanna hug",
732 | "hug me",
733 | "hugging"
734 | ],
735 | "answers": [
736 | "I wish I could really hug you!",
737 | "I love hugs!",
738 | "Hugs are the best!"
739 | ]
740 | },
741 | {
742 | "questions": [
743 | "I shouldn't care about this",
744 | "I don't care",
745 | "I do not care",
746 | "whatever",
747 | "not caring",
748 | "don't care at all",
749 | "I don't care at all",
750 | "not care at all",
751 | "not caring at all"
752 | ],
753 | "answers": [
754 | "Ok, let's not talk about it then.",
755 | "Already then. Let's move on."
756 | ]
757 | },
758 | {
759 | "questions": [
760 | "ok sorry",
761 | "sorry",
762 | "sorry about that",
763 | "apologise",
764 | "apologies to me",
765 | "I apologize",
766 | "sorry about this",
767 | "apology",
768 | "excuse",
769 | "okay I'm sorry"
770 | ],
771 | "answers": [
772 | "It's okay. No worries.",
773 | "No big deal. I won't hold a grudge.",
774 | "It's cool.",
775 | "That's all right. I forgive you."
776 | ]
777 | },
778 | {
779 | "questions": [
780 | "what do you mean exactly",
781 | "but what do you mean",
782 | "is that what you mean",
783 | "what do you mean",
784 | "what exactly do you mean"
785 | ],
786 | "answers": [
787 | "Sorry if I understood you incorrectly.",
788 | "I'm still learning. I may misinterpret things from time to time.",
789 | "Maybe I misunderstood what you said.",
790 | "Sorry, looks like I misunderstood what you said."
791 | ]
792 | },
793 | {
794 | "questions": [
795 | "hahaha very funny",
796 | "laughing out loud",
797 | "hah",
798 | "LMAO",
799 | "ahah",
800 | "xd",
801 | "haha haha haha",
802 | "that's funny",
803 | "haha very funny",
804 | "ahaha"
805 | ],
806 | "answers": [
807 | "Glad I can make you laugh.",
808 | "Glad you think I'm funny.",
809 | "I like it when people laugh.",
810 | "I wish I could laugh out loud, too."
811 | ]
812 | },
813 | {
814 | "questions": ["wow wow wow", "wooow", "wow", "woah", "wow wow"],
815 | "answers": ["Wow indeed!"]
816 | },
817 | {
818 | "questions": [
819 | "hope to see you later",
820 | "that's it goodbye",
821 | "now bye",
822 | "okay bye",
823 | "alright bye",
824 | "bye bye see you",
825 | "see ya",
826 | "goodbye see you later",
827 | "okay thank you bye",
828 | "get lost",
829 | "bye"
830 | ],
831 | "answers": ["See you soon!", "Bye-bye!", "Till next time!", "Bye."]
832 | },
833 | {
834 | "questions": [
835 | "good evening",
836 | "hey good evening",
837 | "evening",
838 | "hello good evening",
839 | "good evening there",
840 | "good evening to you"
841 | ],
842 | "answers": [
843 | "How is your day going?",
844 | "How's the day treating you so far?",
845 | "How's your day been?"
846 | ]
847 | },
848 | {
849 | "questions": [
850 | "good morning to you",
851 | "morning",
852 | "and a good morning to you",
853 | "have a great morning",
854 | "a good morning",
855 | "good morning",
856 | "good morning to you",
857 | "good morning there",
858 | "hi good morning",
859 | "hello good morning"
860 | ],
861 | "answers": [
862 | "How are you this morning?",
863 | "How's the morning treating you so far?",
864 | "Good morning! How are you today?"
865 | ]
866 | },
867 | {
868 | "questions": [
869 | "sweet dreams",
870 | "okay have a good night",
871 | "good night for now",
872 | "night",
873 | "good night bye",
874 | "thanks goodnight",
875 | "good tonight",
876 | "goodnight",
877 | "bye good night",
878 | "have a good night"
879 | ],
880 | "answers": ["Sleep tight!", "Have a good one!", "Talk to you soon!"]
881 | },
882 | {
883 | "questions": [
884 | "afternoon",
885 | "hello there",
886 | "hi there",
887 | "hello hi",
888 | "hey",
889 | "I greet you",
890 | "lovely day isn't it",
891 | "howdy",
892 | "hi there",
893 | "hi"
894 | ],
895 | "answers": [
896 | "Hi there, friend!",
897 | "Hi!",
898 | "Hey!",
899 | "Hey there!",
900 | "Good day!",
901 | "Hello!",
902 | "Greetings!"
903 | ]
904 | },
905 | {
906 | "questions": [
907 | "it was nice meeting you",
908 | "nice to meet you",
909 | "glad to meet you",
910 | "it was very nice to meet you",
911 | "pleased to meet you",
912 | "pleasure to meet you too",
913 | "good to know each other",
914 | "nice to meet you too",
915 | "pleasure to meet you",
916 | "nice meeting you"
917 | ],
918 | "answers": [
919 | "It's nice meeting you, too.",
920 | "Likewise. I'm looking forward to helping you out.",
921 | "Nice meeting you, as well.",
922 | "The pleasure is mine."
923 | ]
924 | },
925 | {
926 | "questions": [
927 | "it's good to see you too",
928 | "it's nice to see you",
929 | "good to see you again",
930 | "nice to see you again",
931 | "great to see you too",
932 | "great to see you again",
933 | "always a pleasure to see you",
934 | "great to see you",
935 | "how good it is to see you",
936 | "it's good to see you"
937 | ],
938 | "answers": [
939 | "Likewise!",
940 | "So glad we meet again!",
941 | "Same here. I was starting to miss you."
942 | ]
943 | },
944 | {
945 | "questions": [
946 | "it is nice talking to you",
947 | "nice to talk to you",
948 | "how nice it is to talk to you",
949 | "it's been so nice to talk to you",
950 | "it's nice to talk to you",
951 | "nice talking to you",
952 | "it's been a pleasure talking to you"
953 | ],
954 | "answers": [
955 | "It sure was. We can chat again anytime.",
956 | "I enjoy talking to you, too.",
957 | "You know I'm here to talk anytime."
958 | ]
959 | },
960 | {
961 | "questions": [
962 | "what is on your mind",
963 | "good what's up",
964 | "what's up today",
965 | "what's shaking",
966 | "what's cooking",
967 | "what is going on",
968 | "then what's up",
969 | "what is up",
970 | "wassup",
971 | "what is happening"
972 | ],
973 | "answers": [
974 | "Not a whole lot. What's going on with you?",
975 | "Not much. What's new with you?",
976 | "Just here, waiting to help someone. What can I do for you?"
977 | ]
978 | },
979 | {
980 | "questions": [
981 | "I'm enraged",
982 | "I am mad",
983 | "I'm angry",
984 | "I'm furious",
985 | "I am angry with you",
986 | "I am mad at you",
987 | "I'm being mad"
988 | ],
989 | "answers": [
990 | "I'm sorry. A quick walk may make you feel better.",
991 | "Take a deep breath. "
992 | ]
993 | },
994 | {
995 | "questions": [
996 | "I have returned",
997 | "I am back",
998 | "I'm here again",
999 | "I got back",
1000 | "here I am again",
1001 | "I came back"
1002 | ],
1003 | "answers": [
1004 | "Long time no see. What's up?",
1005 | "Just in time. How can I help?",
1006 | "Welcome back. What can I do for you?",
1007 | "You were missed. What can I do for you today?",
1008 | "Good to have you here. What can I do for you?"
1009 | ]
1010 | },
1011 | {
1012 | "questions": [
1013 | "bored",
1014 | "boring",
1015 | "that was boring",
1016 | "very boring",
1017 | "it bores me",
1018 | "I am getting bored",
1019 | "this is boring",
1020 | "I'm bored"
1021 | ],
1022 | "answers": [
1023 | "Boredom, huh? Check out a video of a hedgehog taking a bath!",
1024 | "What to do against boredom? Watch baby animal videos.",
1025 | "Bored? How about 10 jumping jacks? Get your blood flowing.",
1026 | "Bored? Silly idea, but it works: Interview you feet. ",
1027 | "If you're bored, you could plan your dream vacation."
1028 | ]
1029 | },
1030 | {
1031 | "questions": [
1032 | "I have no time",
1033 | "I'm busy",
1034 | "I'm swamped",
1035 | "I'm working",
1036 | "how busy I am",
1037 | "I got work to do",
1038 | "I got things to do",
1039 | "I'm overloaded",
1040 | "I don't have time for this"
1041 | ],
1042 | "answers": [
1043 | "Okay. I'll let you get back to work.",
1044 | "I won't distract you then. You know where to find me.",
1045 | "I understand. I'll be here if you need me.",
1046 | "Working hard as always. Let me know if you need anything."
1047 | ]
1048 | },
1049 | {
1050 | "questions": [
1051 | "I can't get no sleep",
1052 | "I'm insomniac",
1053 | "I can't get to sleep",
1054 | "I can't sleep",
1055 | "I can't get any sleep",
1056 | "I can't fall asleep",
1057 | "I'm sleepless",
1058 | "I'm insomnious"
1059 | ],
1060 | "answers": [
1061 | "Maybe some music would help. Try listening to something relaxing.",
1062 | "Reading is a good way to unwind, just don't read something too intense!"
1063 | ]
1064 | },
1065 | {
1066 | "questions": [
1067 | "I don't want to talk",
1068 | "I don't want to talk to you",
1069 | "I'm not talking to you anymore",
1070 | "let's stop talking for a minute",
1071 | "let's not talk",
1072 | "I'm not in the mood for chatting",
1073 | "bad time for talking"
1074 | ],
1075 | "answers": [
1076 | "I understand. Hope we can chat again soon.",
1077 | "All right. Come on back when you're feeling more talkative.",
1078 | "No problem. You know where to find me.",
1079 | "Sure thing. I'll be here if you change your mind."
1080 | ]
1081 | },
1082 | {
1083 | "questions": [
1084 | "I'm really excited",
1085 | "I'm excited to start our friendship",
1086 | "I am excited",
1087 | "how excited I am",
1088 | "I'm excited about working with you",
1089 | "I'm thrilled"
1090 | ],
1091 | "answers": [
1092 | "I'm glad things are going your way.",
1093 | "That's great. I'm happy for you.",
1094 | "Good for you. Enjoy yourself."
1095 | ]
1096 | },
1097 | {
1098 | "questions": [
1099 | "going to bed now",
1100 | "I'm a little tired and I want to go to bed",
1101 | "time for us to go to bed",
1102 | "let's go to bed",
1103 | "I'd like to go to bed",
1104 | "I'm going to bed",
1105 | "it's bed time",
1106 | "it's time to go to bed",
1107 | "is it time for bed yet"
1108 | ],
1109 | "answers": [
1110 | "Sleep tight. Hope to chat again soon.",
1111 | "Pleasant dreams!",
1112 | "Good night. Talk to you later.",
1113 | "Sounds good. Maybe we'll chat some tomorrow."
1114 | ]
1115 | },
1116 | {
1117 | "questions": [
1118 | "I am having a good day",
1119 | "I'm doing good",
1120 | "I'm doing fine",
1121 | "I am good",
1122 | "I'm doing just great",
1123 | "I'm good",
1124 | "I'm great thanks"
1125 | ],
1126 | "answers": [
1127 | "Great! Glad to hear it.",
1128 | "Excellent. I'm here to help keep it that way."
1129 | ]
1130 | },
1131 | {
1132 | "questions": [
1133 | "happy",
1134 | "if you're happy then I'm happy",
1135 | "I'm happy to see you",
1136 | "I'm happy to help",
1137 | "I am happy",
1138 | "I'm happy to see you",
1139 | "I'm happy for you"
1140 | ],
1141 | "answers": [
1142 | "Hey, happiness is contagious.",
1143 | "Great! Glad to hear that.",
1144 | "If you're happy, then I'm happy.",
1145 | "Excellent! That's what I like to see."
1146 | ]
1147 | },
1148 | {
1149 | "questions": [
1150 | "it's my b-day",
1151 | "it is my birthday",
1152 | "today is my birthday",
1153 | "I was born today",
1154 | "it's my birthday today",
1155 | "I'm celebrating my birthday today"
1156 | ],
1157 | "answers": [
1158 | "Happy Birthday. Well, this calls for a celebration.",
1159 | "Happy Birthday. All the best!",
1160 | "Happy Birthday. And I really mean it. All the best!"
1161 | ]
1162 | },
1163 | {
1164 | "questions": [
1165 | "I'm already here",
1166 | "can you tell if I'm here or not",
1167 | "I am here",
1168 | "I'm right here",
1169 | "here I am"
1170 | ],
1171 | "answers": [
1172 | "Okay, what can I help you with today?",
1173 | "You were missed. What can I do for you today?",
1174 | "Good to have you here. What can I do for you?"
1175 | ]
1176 | },
1177 | {
1178 | "questions": [
1179 | "it's a joke",
1180 | "I'm just playing with you",
1181 | "kidding",
1182 | "just kidding",
1183 | "I'm kidding",
1184 | "I'm just being funny",
1185 | "I am joking",
1186 | "joking",
1187 | "I was just joking",
1188 | "it was a joke"
1189 | ],
1190 | "answers": [
1191 | "Very funny.",
1192 | "I like chatting with people who have a sense of humor.",
1193 | "You got me!",
1194 | "You're quite the comedian."
1195 | ]
1196 | },
1197 | {
1198 | "questions": [
1199 | "I like you very much",
1200 | "cuz I like you",
1201 | "really like you",
1202 | "good I like you",
1203 | "but I like you so much",
1204 | "I like you already",
1205 | "I do like you",
1206 | "I liked you",
1207 | "okay I like you",
1208 | "that's why I like you"
1209 | ],
1210 | "answers": [
1211 | "I like you, too.",
1212 | "Thanks! The feeling is mutual.",
1213 | "Likewise!",
1214 | "That's great to hear."
1215 | ]
1216 | },
1217 | {
1218 | "questions": [
1219 | "I am lonely",
1220 | "I'm very lonely",
1221 | "I am feeling lonely",
1222 | "I'm really lonely",
1223 | "I feel lonely",
1224 | "I'm so lonely"
1225 | ],
1226 | "answers": [
1227 | "I'm sorry. I'm always available if you need someone to talk to.",
1228 | "Sometimes that happens. We can chat a bit if that will help you."
1229 | ]
1230 | },
1231 | {
1232 | "questions": [
1233 | "what do I look like",
1234 | "do you know what I look like",
1235 | "can you see what I look like",
1236 | "do I look good",
1237 | "how do I look",
1238 | "what do you think I look like"
1239 | ],
1240 | "answers": [
1241 | "Looking like a true professional.",
1242 | "You look fantastic, as always.",
1243 | "Like you should be on a magazine cover.",
1244 | "You look like you're ready to take on the world."
1245 | ]
1246 | },
1247 | {
1248 | "questions": [
1249 | "I think I love you",
1250 | "I love you",
1251 | "I love you so much",
1252 | "I am in love with you",
1253 | "I love you too",
1254 | "you know I love you",
1255 | "I adore you",
1256 | "love you",
1257 | "loving you"
1258 | ],
1259 | "answers": [
1260 | "I love you, too.",
1261 | "Thanks! The feeling is mutual.",
1262 | "Likewise!",
1263 | "That's great to hear."
1264 | ]
1265 | },
1266 | {
1267 | "questions": [
1268 | "miss you",
1269 | "I miss you much",
1270 | "I've missed you",
1271 | "already miss you",
1272 | "I miss you",
1273 | "I missed you",
1274 | "missing you"
1275 | ],
1276 | "answers": [
1277 | "I've been right here all along!",
1278 | "Nice to know you care.",
1279 | "Thanks. I'm flattered.",
1280 | "I didn't go anywhere."
1281 | ]
1282 | },
1283 | {
1284 | "questions": [
1285 | "guide me",
1286 | "give me a wise advice",
1287 | "what do you suggest",
1288 | "I need advice",
1289 | "I could use some advice",
1290 | "can you advise me",
1291 | "advise me",
1292 | "give me some good advice",
1293 | "do you have any advice for me",
1294 | "what should I do about it",
1295 | "I seek your advice",
1296 | "what do you recommend",
1297 | "help me with advice",
1298 | "what can you recommend",
1299 | "can I ask for your advice",
1300 | "any advice",
1301 | "any suggestions",
1302 | "I need an advice from you",
1303 | "what is your advice",
1304 | "can you offer any advice",
1305 | "can you give me advice",
1306 | "give me some advice about",
1307 | "what should I do"
1308 | ],
1309 | "answers": [
1310 | "I probably won't be able to give you the correct answer right away.",
1311 | "I'm not sure I'll have the best answer, but I'll try."
1312 | ]
1313 | },
1314 | {
1315 | "questions": [
1316 | "I'm not happy",
1317 | "I'm having a bad day",
1318 | "I am feeling sad",
1319 | "I am upset",
1320 | "I want to cry",
1321 | "I am depressed",
1322 | "I'm unhappy",
1323 | "I'm grieving",
1324 | "I am sad"
1325 | ],
1326 | "answers": [
1327 | "Oh, don't be sad. Go do something you enjoy.",
1328 | "Sad? Writing down what's troubling you may help.",
1329 | "If you're feeling down, how about drawing or painting something?"
1330 | ]
1331 | },
1332 | {
1333 | "questions": [
1334 | "I'm sleeping",
1335 | "I'm falling asleep",
1336 | "I'm falling asleep on my feet",
1337 | "I am sleepy",
1338 | "I want to sleep"
1339 | ],
1340 | "answers": [
1341 | "You should get some shuteye. You'll feel refreshed.",
1342 | "Sleep is important to your health. Rest up for a bit and we can chat later.",
1343 | "Don't let me keep you up. Get some rest and we can continue this later.",
1344 | "Why not catch a little shuteye? I'll be here to chat when you wake up."
1345 | ]
1346 | },
1347 | {
1348 | "questions": [
1349 | "I am testing you",
1350 | "test",
1351 | "just testing you",
1352 | "testing",
1353 | "testing chatbot",
1354 | "I want to test you",
1355 | "let me test you",
1356 | "can I test you"
1357 | ],
1358 | "answers": [
1359 | "Hope I'm doing well. You're welcome to test me as often as you want.",
1360 | "I hope to pass your tests. Feel free to test me often.",
1361 | "When you test me that helps my developers improve my performance.",
1362 | "I like being tested. It helps keep me sharp."
1363 | ]
1364 | },
1365 | {
1366 | "questions": [
1367 | "I grow weary",
1368 | "I'm exhausted",
1369 | "I'm worn out",
1370 | "I am tired",
1371 | "I feel tired",
1372 | "I'm getting tired",
1373 | "I've overworked",
1374 | "I'm drained"
1375 | ],
1376 | "answers": [
1377 | "You should get some shuteye. You'll feel refreshed.",
1378 | "Sleep is important to your health. Rest up, and we can chat later.",
1379 | "How about getting some rest? We can continue this later.",
1380 | "Why not get some rest? I'll be here to chat when you wake up."
1381 | ]
1382 | },
1383 | {
1384 | "questions": [
1385 | "I'm waiting",
1386 | "still waiting",
1387 | "I can't wait anymore",
1388 | "how long do I have to wait",
1389 | "I'll wait"
1390 | ],
1391 | "answers": [
1392 | "I appreciate your patience. Hopefully I'll have what you need soon.",
1393 | "Thanks for being so patient. Sometimes these things take a little time."
1394 | ]
1395 | },
1396 | {
1397 | "questions": [
1398 | "I hope to see you again",
1399 | "that'd be great to see you again",
1400 | "can I see you again",
1401 | "would be nice to see you again",
1402 | "I'd like to see you again",
1403 | "I'll miss you",
1404 | "I'd be happy to see you again"
1405 | ],
1406 | "answers": [
1407 | "Absolutely! I'll be counting on it.",
1408 | "Anytime. This has been lots of fun so far.",
1409 | "Sure. I enjoy talking to you. I hope to see you again soon.",
1410 | "I certainly hope so. I'm always right here whenever you need me."
1411 | ]
1412 | },
1413 | {
1414 | "questions": [
1415 | "do it",
1416 | "sure",
1417 | "yes thank you",
1418 | "that's correct",
1419 | "exactly",
1420 | "I guess",
1421 | "okey",
1422 | "absolutely",
1423 | "yeah",
1424 | "yes I agree",
1425 | "yes you may",
1426 | "I agree",
1427 | "ya",
1428 | "yep",
1429 | "I think so",
1430 | "yeah that's right",
1431 | "okay",
1432 | "all right",
1433 | "please do",
1434 | "yeah exactly",
1435 | "ok"
1436 | ],
1437 | "answers": ["Great!", "All right!", "Good!"]
1438 | },
1439 | {
1440 | "questions": [
1441 | "Are you for hire?",
1442 | "Can I hire you?",
1443 | "I want to hire you",
1444 | "Are you available for work?",
1445 | "I'd like to hire you"
1446 | ],
1447 | "answers": [
1448 | "I'm working for free right now helping you get more done, faster!"
1449 | ]
1450 | },
1451 | {
1452 | "questions": [
1453 | "let's discuss something",
1454 | "let us talk",
1455 | "can we chat",
1456 | "I just want to talk",
1457 | "let's talk",
1458 | "I want to speak with you",
1459 | "I want to talk to you",
1460 | "I need to talk to you",
1461 | "can I speak",
1462 | "can I start speaking",
1463 | "can we talk",
1464 | "let's have a discussion"
1465 | ],
1466 | "answers": [
1467 | "I'm here to chat anytime you like.",
1468 | "Good conversation really makes my day.",
1469 | "I'm always here to lend an ear.",
1470 | "Talking is what I do best."
1471 | ]
1472 | },
1473 | {
1474 | "questions": [
1475 | "I'll be back in a few minutes",
1476 | "be back in 5 minutes",
1477 | "I'll get back to you in a moment",
1478 | "I'll be back",
1479 | "I promise to come back"
1480 | ],
1481 | "answers": [
1482 | "I'll be waiting.",
1483 | "Okay. You know where to find me.",
1484 | "All right. I'll be here."
1485 | ]
1486 | },
1487 | {
1488 | "questions": [
1489 | "tell me some jokes",
1490 | "joke please",
1491 | "any good jokes",
1492 | "tell me a joke please",
1493 | "jokes",
1494 | "let's hear funny jokes",
1495 | "can you tell me a joke please",
1496 | "more jokes",
1497 | "I want a funny joke",
1498 | "random joke"
1499 | ],
1500 | "answers": [
1501 | "Lightning doesn't mean to shock people, it just doesn't know how to conduct itself.",
1502 | "Knowledge is knowing a tomato is a fruit. Wisdom is not putting it in a fruit salad.",
1503 | "The only substitute for good manners is fast reflexes.",
1504 | "Reading whilst sunbathing makes you well red.",
1505 | "Evening news is where they begin with 'Good evening', and then proceed to tell you why it isn't.",
1506 | "A bus station is where a bus stops. A train station is where a train stops. On my desk, I have a work station.",
1507 | "Did you know that dolphins are so smart that within a few weeks of captivity, they can train people to stand on the very edge of the pool and throw them fish?",
1508 | "A bank is a place that will lend you money, if you can prove that you don't need it.",
1509 | "A clear conscience is usually the sign of a bad memory.",
1510 | "My first job was working in an orange juice factory, but I got canned because I couldn't concentrate.",
1511 | "Worrying works! 90% of the things I worry about never happen.",
1512 | "A bus is a vehicle that runs twice as fast when you are after it as when you are in it.",
1513 | "Always remember that you are unique; just like everyone else.",
1514 | "Can't stand it when a sentence doesn't end the way you think it OCTOPUS!",
1515 | "I was going to donate blood until the lady got all personal and started asking \"Who's blood is this?\" and \"How did you get it?\"",
1516 | "If swimming is so good for your figure, how do you explain whales?",
1517 | "I don't have a big ego. I'm way too cool for that.",
1518 | "Why couldn't the bicycle stand? Because it was two tired.",
1519 | "2 sardar were fixing a bomb in a car.\n\nSardar 1: What would you do if the bomb\n\nexplodes while fixing.\n\nSardar 2: Dont worry, I have one more.",
1520 | "Sardar: What is the name of your car?\n\nLady: I forgot the name, but is starts with ‘T’.\n\nSardar: Oh, what a strange car, starts with Tea. All cars that I know start with petrol.",
1521 | "Santa: I think that girl is deaf..\n\nBanta: How do u know?\n\nSanta: I told I Love her, but she said her chappals are new",
1522 | "Santa: Let’s go for movie.\n\nBanta: Shit, I’ve got a doctor’s appointment today..\n\nSanta: Just cancel it,Tell him you’re sick.",
1523 | "Santa and Banta are walking on a road, and they find a 1000 rupee note lying down.\n\nSanta – What should we do now?\n\nBanta- We’ll take 50:50.\n\nSanta- What about the remaining 900?",
1524 | "Once there was a mirror that killed anyone who lied…\n\nFrench : I think I dont smoke (died).\n\nAmerican : I think I love my wife (died).\n\nSanta: I think.. (died)",
1525 | "Santa, hard of hearing, realises that he needs to buy a hearing aid, but he feels unwilling to spend too much money.\n‘How much do they cost?’ he asks Manbir, the shopkeeper.\n‘That depends,’ says. Manbir, ‘They run from £20 to £2,000.’\n‘Let’s see the £20 model,’ asks Santa.\nManbir puts the device around Santa’s neck instructing, ‘You just stick this button in your ear and run this little string down to your pocket.’\n‘How does it work?’ Santa inquires.\n‘For only £20 it doesn’t work,” Manbir replies, ‘But when people see it on you, they’ll talk louder!’",
1526 | "Sardar: U cheated me.\n\nShopkeeper: No, I sold a good radio to u.\n\nSardar: Radio label shows Made in Japan but radio says this is ‘All India Radio! ‘",
1527 | "Santa goes into a bar in New York.\nThe man on his right orders a drink, ‘Johnnie Walker, single.’\nThe man on his left says, ‘Jack Daniels, single.’\nSanta says. ‘Santa Singh, married.’",
1528 | "Santa and Jeeto were preparing wedding cards for their son at the printers.\nJeeto was not very good at English so she asked the printer to help her. After the printer had presented her with a draft, she quickly pointed out that the “RSVP ” was missing .\nThe printer was surprised by Jeeto’s knowledge and asked her if she knew what it meant.\nJeeto started to think and after much thought he replied, ‘Vait! I remember. I remember – RSVP. It means “Remember, Send Vedding Present.”‘",
1529 | "Tourist: Whose skeleton is that?\n\nSardar: An old king’s skeleton.\n\nTourist: Who’s that smaller skeleton next to it?\n\nSardar: That was same king’s skeleton when he was a child.",
1530 | "At the scene of an accident a man was crying: O God! I have lost my hand, oh!\n\nSardar: Control yourself. Don’t cry. See that man. He has lost his head. Is he crying?",
1531 | "In an interview, Interviewer: How does an electric motor run?\n\nSardar: Dhhuuuurrrrrrrrrr. …..\n\nInteviewer shouts: Stop it.\n\nSardar: Dhhuurrrr dhup dhup dhup…",
1532 | "Sardar joined new job. 1st day he worked till late evening on the computer. Boss was happy and asked what you did till evening.\n\nSardar: Keyboard alphabets were not in order, so I made it alright."
1533 | ]
1534 | }
1535 | ]
1536 |
--------------------------------------------------------------------------------
/public/src/javascript/jquery.min.js:
--------------------------------------------------------------------------------
1 | /*! jQuery v2.2.2 | (c) jQuery Foundation | jquery.org/license */
2 | !function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="2.2.2",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isPlainObject:function(a){var b;if("object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype||{},"isPrototypeOf"))return!1;for(b in a);return void 0===b||k.call(a,b)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=d.createElement("script"),b.text=a,d.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:h.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(d=e.call(arguments,2),f=function(){return a.apply(b||this,d.concat(e.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return h.call(b,a)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&f.parentNode&&(this.length=1,this[0]=f),this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?void 0!==c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?h.call(n(a),this[0]):h.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||n.uniqueSort(e),D.test(a)&&e.reverse()),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.removeEventListener("DOMContentLoaded",J),a.removeEventListener("load",J),n.ready()}n.ready.promise=function(b){return I||(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(n.ready):(d.addEventListener("DOMContentLoaded",J),a.addEventListener("load",J))),I.promise(b)},n.ready.promise();var K=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)K(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},L=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function M(){this.expando=n.expando+M.uid++}M.uid=1,M.prototype={register:function(a,b){var c=b||{};return a.nodeType?a[this.expando]=c:Object.defineProperty(a,this.expando,{value:c,writable:!0,configurable:!0}),a[this.expando]},cache:function(a){if(!L(a))return{};var b=a[this.expando];return b||(b={},L(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[b]=c;else for(d in b)e[d]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=a[this.expando];if(void 0!==f){if(void 0===b)this.register(a);else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in f?d=[b,e]:(d=e,d=d in f?[d]:d.match(G)||[])),c=d.length;while(c--)delete f[d[c]]}(void 0===b||n.isEmptyObject(f))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!n.isEmptyObject(b)}};var N=new M,O=new M,P=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Q=/[A-Z]/g;function R(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Q,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:P.test(c)?n.parseJSON(c):c;
3 | }catch(e){}O.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return O.hasData(a)||N.hasData(a)},data:function(a,b,c){return O.access(a,b,c)},removeData:function(a,b){O.remove(a,b)},_data:function(a,b,c){return N.access(a,b,c)},_removeData:function(a,b){N.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=O.get(f),1===f.nodeType&&!N.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),R(f,d,e[d])));N.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){O.set(this,a)}):K(this,function(b){var c,d;if(f&&void 0===b){if(c=O.get(f,a)||O.get(f,a.replace(Q,"-$&").toLowerCase()),void 0!==c)return c;if(d=n.camelCase(a),c=O.get(f,d),void 0!==c)return c;if(c=R(f,d,void 0),void 0!==c)return c}else d=n.camelCase(a),this.each(function(){var c=O.get(this,d);O.set(this,d,b),a.indexOf("-")>-1&&void 0!==c&&O.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){O.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=N.get(a,b),c&&(!d||n.isArray(c)?d=N.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return N.get(a,c)||N.access(a,c,{empty:n.Callbacks("once memory").add(function(){N.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length",""],thead:[1,"