summaryrefslogtreecommitdiffstats
path: root/components/datalake-handler
diff options
context:
space:
mode:
Diffstat (limited to 'components/datalake-handler')
-rw-r--r--components/datalake-handler/admin/src/src/app/app.module.ts4
-rw-r--r--components/datalake-handler/admin/src/src/app/core/models/topic.model.ts80
-rw-r--r--components/datalake-handler/admin/src/src/app/core/services/rest-api.service.ts322
-rw-r--r--components/datalake-handler/admin/src/src/app/shared/components/icon/icon.component.css0
-rw-r--r--components/datalake-handler/admin/src/src/app/shared/components/icon/icon.component.html25
-rw-r--r--components/datalake-handler/admin/src/src/app/shared/components/icon/icon.component.spec.ts25
-rw-r--r--components/datalake-handler/admin/src/src/app/shared/components/icon/icon.component.ts40
-rw-r--r--components/datalake-handler/admin/src/src/app/shared/modules/table/table.component.html58
-rw-r--r--components/datalake-handler/admin/src/src/app/shared/modules/table/table.component.ts34
-rw-r--r--components/datalake-handler/admin/src/src/app/views/test/test.component.ts96
-rw-r--r--components/datalake-handler/admin/src/src/app/views/topics/topic-list/new-topic-model/new-topic-model.component.ts92
-rw-r--r--components/datalake-handler/admin/src/src/app/views/topics/topic-list/topic-detail-modal/topic-detail-modal.component.ts4
-rw-r--r--components/datalake-handler/admin/src/src/app/views/topics/topic-list/topic-list.component.html142
-rw-r--r--components/datalake-handler/admin/src/src/app/views/topics/topic-list/topic-list.component.ts735
-rw-r--r--components/datalake-handler/admin/src/src/assets/icons/add.svg8
-rwxr-xr-xcomponents/datalake-handler/admin/src/src/assets/icons/druid_able.svg26
-rwxr-xr-xcomponents/datalake-handler/admin/src/src/assets/icons/druid_disable.svg26
-rwxr-xr-xcomponents/datalake-handler/admin/src/src/assets/icons/hadoop_able.svg247
-rwxr-xr-xcomponents/datalake-handler/admin/src/src/assets/icons/hadoop_disable.svg247
-rwxr-xr-xcomponents/datalake-handler/admin/src/src/assets/icons/kafka_able.svg27
-rwxr-xr-xcomponents/datalake-handler/admin/src/src/assets/icons/kafka_disable.svg27
-rwxr-xr-xcomponents/datalake-handler/admin/src/src/assets/icons/kibana_able.svg13
-rwxr-xr-xcomponents/datalake-handler/admin/src/src/assets/icons/kibana_disable.svg13
-rwxr-xr-xcomponents/datalake-handler/admin/src/src/assets/icons/mongoDB_able.svg20
-rwxr-xr-xcomponents/datalake-handler/admin/src/src/assets/icons/mongoDB_disable.svg20
25 files changed, 1203 insertions, 1128 deletions
diff --git a/components/datalake-handler/admin/src/src/app/app.module.ts b/components/datalake-handler/admin/src/src/app/app.module.ts
index 927f229a..2f968bfb 100644
--- a/components/datalake-handler/admin/src/src/app/app.module.ts
+++ b/components/datalake-handler/admin/src/src/app/app.module.ts
@@ -100,6 +100,7 @@ import { ModalDemoComponent } from "./views/test/modal-demo/modal-demo.component
import { KafkaComponent } from './views/kafka/kafka.component';
// Angular SVG Icon
import { AngularSvgIconModule } from "angular-svg-icon";
+import { IconComponent } from './shared/components/icon/icon.component';
@NgModule({
declarations: [
@@ -144,7 +145,8 @@ import { AngularSvgIconModule } from "angular-svg-icon";
EditKafkaModalComponent,
ToolsComponent,
ModalToolsComponent,
- ToolAddModalComponent
+ ToolAddModalComponent,
+ IconComponent
],
imports: [
BrowserModule,
diff --git a/components/datalake-handler/admin/src/src/app/core/models/topic.model.ts b/components/datalake-handler/admin/src/src/app/core/models/topic.model.ts
index d8f7fe70..18faa582 100644
--- a/components/datalake-handler/admin/src/src/app/core/models/topic.model.ts
+++ b/components/datalake-handler/admin/src/src/app/core/models/topic.model.ts
@@ -23,20 +23,68 @@
* @author Ekko Chang
*
*/
+
export class Topic {
- enabled: boolean;
- name: string;
- login: string;
- password: string;
- enabledSinkdbs: any;
- sinkdbs: any;
- saveRaw: boolean;
- dataFormat: string;
- ttl: number;
- correlateClearedMessage: boolean;
- messageIdPath: string;
- // for UI display
- type: boolean; // 1: Configure 0: Unconfiure
- //id: number; //todo
- //kafkas: any; //todo
-} \ No newline at end of file
+ public id: number;
+ public name: string;
+ public login: string;
+ public password: string;
+ public enabledSinkdbs: Array<string>; // related db which is enabled
+ public sinkdbs: Array<string>; // related db whatever enabled or disable
+ public enabled: boolean;
+ public saveRaw: boolean;
+ public dataFormat: string;
+ public ttl: number;
+ public correlateClearedMessage: boolean;
+ public messageIdPath: string;
+ public aggregateArrayPath: string;
+ public flattenArrayPath: string;
+ public enbabledKafkas: Array<string>;
+ public kafkas: Array<string>;
+ // properties only for UI
+ public config: boolean; //true: Configure, otherwise false: Unconfiure
+ public kafkaName: string;
+ public countCouchbase: number;
+ public countDruid: number;
+ public countEs: number;
+ public countMongo: number;
+ public countHadoop: number;
+
+ constructor(
+ id: number,
+ name: string,
+ login: string,
+ password: string,
+ enabledSinkdbs: Array<string>,
+ sinkdbs: Array<string>,
+ enabled: boolean,
+ saveRaw: boolean,
+ dataFormat: string,
+ ttl: number,
+ correlateClearedMessage: boolean,
+ messageIdPath: string,
+ aggregateArrayPath: string,
+ flattenArrayPath: string,
+ enbabledKafkas: Array<string>,
+ kafkas: Array<string>,
+ config: boolean
+ ) {
+ this.id = id;
+ this.name = name;
+ this.login = login;
+ this.password = password;
+ this.enabledSinkdbs = enabledSinkdbs;
+ this.sinkdbs = sinkdbs;
+ this.enabled = enabled;
+ this.saveRaw = saveRaw;
+ this.dataFormat = dataFormat;
+ this.ttl = ttl;
+ this.correlateClearedMessage = correlateClearedMessage;
+ this.messageIdPath = messageIdPath;
+ this.aggregateArrayPath = aggregateArrayPath;
+ this.flattenArrayPath = flattenArrayPath;
+ this.enbabledKafkas = enbabledKafkas;
+ this.kafkas = kafkas;
+ this.config = config;
+ }
+}
diff --git a/components/datalake-handler/admin/src/src/app/core/services/rest-api.service.ts b/components/datalake-handler/admin/src/src/app/core/services/rest-api.service.ts
index 8ccbcc91..0c520895 100644
--- a/components/datalake-handler/admin/src/src/app/core/services/rest-api.service.ts
+++ b/components/datalake-handler/admin/src/src/app/core/services/rest-api.service.ts
@@ -35,7 +35,7 @@ import { Topic } from "src/app/core/models/topic.model";
import { Db } from "src/app/core/models/db.model";
import { Template } from "src/app/core/models/template.model";
import { Dashboard } from "src/app/core/models/dashboard.model";
-import {Kafka} from "../models/kafka.model";
+import { Kafka } from "../models/kafka.model";
const prefix = "/datalake/v1/";
const httpOptions = {
@@ -48,7 +48,7 @@ const httpOptions = {
providedIn: "root"
})
export class RestApiService {
- constructor(private http: HttpClient) { }
+ constructor(private http: HttpClient) {}
private extractData(res: Response) {
if (res.status < 200 || res.status >= 300) {
@@ -79,118 +79,106 @@ export class RestApiService {
/*
Topic default config
*/
- getTopicDefaultConfig(): Observable<any> {
- return this.http.get(prefix + "topics/_DL_DEFAULT_").pipe(
- retry(1),
- map(this.extractData),
- catchError(this.handleError)
- );
- }
-
- updateTopicDefaultConfig(t: Topic): Observable<any> {
+ public getTopicDefault(): Observable<Topic> {
return this.http
- .put(prefix + "topics/_DL_DEFAULT_", JSON.stringify(t), httpOptions)
- .pipe(
- retry(1),
- tap(_ => this.extractData),
- catchError(this.handleError)
- );
- }
+ .get<Topic>(prefix + "topics/default")
+ .pipe(retry(1), catchError(this.handleError));
+ }
+
+ // updateTopicDefaultConfig(t: Topic): Observable<any> {
+ // return this.http
+ // .put(prefix + "topics/_DL_DEFAULT_", JSON.stringify(t), httpOptions)
+ // .pipe(
+ // retry(1),
+ // tap(_ => this.extractData),
+ // catchError(this.handleError)
+ // );
+ // }
/*
Topics
*/
- getTopicsFromDmaap(): Observable<any> {
- return this.http.get(prefix + "topics/dmaap").pipe(
- retry(1),
- map(this.extractData),
- catchError(this.handleError)
- );
- }
-
- getTopicsFromFeeder(): Observable<any> {
- return this.http.get(prefix + "topics").pipe(
- retry(1),
- map(this.extractData),
- catchError(this.handleError)
- );
- }
-
- getTopicDetail(id): Observable<any> {
- return this.http.get(prefix + "topics/" + id).pipe(
- retry(1),
- map(this.extractData),
- catchError(this.handleError)
- );
+ public getTopicList(): Observable<string[]> {
+ return this.http
+ .get<string[]>(prefix + "topics")
+ .pipe(retry(1), catchError(this.handleError));
}
- addNewTopic(t: Topic): Observable<any> {
+ public getTopicListFromKafka(id: string | number): Observable<string[]> {
return this.http
- .post<any>(prefix + "topics", t)
- .pipe(
- retry(1),
- tap(_ => console.log(`add topic name=${t.name}`)),
- catchError(this.handleError)
- );
+ .get<string[]>(prefix + "topics/dmaap/" + id)
+ .pipe(retry(1), catchError(this.handleError));
}
- addTopic(t: Topic): Observable<any> {
+ public getTopic(id: string): Observable<Topic> {
return this.http
- .post<any>(prefix + "topics", t)
- .pipe(
- retry(1),
- tap(_ => console.log(`add topic name=${t.name}`)),
- catchError(this.handleError)
- );
+ .get<Topic>(prefix + "topics/" + id)
+ .pipe(retry(1), catchError(this.handleError));
}
- upadteTopic(t: Topic): Observable<any> {
+ // TODO
+ getTopicsFromFeeder(): Observable<any> {
return this.http
- .put(prefix + "topics/" + t.name, t)
- .pipe(
- retry(1),
- tap(_ => this.extractData),
- catchError(this.handleError)
- );
+ .get(prefix + "topics")
+ .pipe(retry(1), map(this.extractData), catchError(this.handleError));
}
- deleteTopic(name: string): Observable<any> {
- return this.http.delete(prefix + "topics/" + name).pipe(
- retry(1),
- tap(_ => console.log(`deleted topic name=${name}`)),
- catchError(this.handleError)
- );
- }
+ // addNewTopic(t: Topic): Observable<any> {
+ // return this.http.post<any>(prefix + "topics", t).pipe(
+ // retry(1),
+ // tap(_ => console.log(`add topic name=${t.name}`)),
+ // catchError(this.handleError)
+ // );
+ // }
+
+ // addTopic(t: Topic): Observable<any> {
+ // return this.http.post<any>(prefix + "topics", t).pipe(
+ // retry(1),
+ // tap(_ => console.log(`add topic name=${t.name}`)),
+ // catchError(this.handleError)
+ // );
+ // }
+
+ // upadteTopic(t: Topic): Observable<any> {
+ // return this.http.put(prefix + "topics/" + t.name, t).pipe(
+ // retry(1),
+ // tap(_ => this.extractData),
+ // catchError(this.handleError)
+ // );
+ // }
+
+ // deleteTopic(name: string): Observable<any> {
+ // return this.http.delete(prefix + "topics/" + name).pipe(
+ // retry(1),
+ // tap(_ => console.log(`deleted topic name=${name}`)),
+ // catchError(this.handleError)
+ // );
+ // }
/*
Database
*/
getDbEncryptList(flag): Observable<any> {
- return this.http.get(prefix + "dbs/list?isDb="+flag).pipe(
- retry(1),
- map(this.extractData),
- catchError(this.handleError)
- );
+ return this.http
+ .get(prefix + "dbs/list?tool=" + flag)
+ .pipe(retry(1), map(this.extractData), catchError(this.handleError));
}
getDbList(): Observable<any> {
- return this.http.get(prefix + "dbs").pipe(
- retry(1),
- map(this.extractData),
- catchError(this.handleError)
- );
+ return this.http
+ .get(prefix + "dbs")
+ .pipe(retry(1), map(this.extractData), catchError(this.handleError));
}
getDbDetail(id): Observable<any> {
- return this.http.get(prefix + "dbs/" + id).pipe(
- retry(1),
- map(this.extractData),
- catchError(this.handleError)
- );
+ return this.http
+ .get(prefix + "dbs/" + id)
+ .pipe(retry(1), map(this.extractData), catchError(this.handleError));
}
deleteDb(id): Observable<any> {
- return this.http.delete(prefix + "dbs/" + id).pipe( //online
+ return this.http.delete(prefix + "dbs/" + id).pipe(
+ //online
retry(1),
map(this.extractData2),
catchError(this.handleError)
@@ -198,33 +186,27 @@ export class RestApiService {
}
updateDb(d: Db): Observable<any> {
- return this.http
- .put(prefix + "dbs", d)
- .pipe(
- retry(1),
- tap(_ => this.extractData),
- catchError(this.handleError)
- );
+ return this.http.put(prefix + "dbs", d).pipe(
+ retry(1),
+ tap(_ => this.extractData),
+ catchError(this.handleError)
+ );
}
createDb(d: Db): Observable<any> {
- return this.http
- .post(prefix + "dbs", d)
- .pipe(
- retry(1),
- tap(_ => this.extractData),
- catchError(this.handleError)
- );
- }
-
- getDbTypeList(): Observable<any> {
- return this.http.get(prefix + "db_type").pipe(
+ return this.http.post(prefix + "dbs", d).pipe(
retry(1),
- map(this.extractData),
+ tap(_ => this.extractData),
catchError(this.handleError)
);
}
+ getDbTypeList(): Observable<any> {
+ return this.http
+ .get(prefix + "db_type")
+ .pipe(retry(1), map(this.extractData), catchError(this.handleError));
+ }
+
/*
Feeder
*/
@@ -245,55 +227,46 @@ export class RestApiService {
}
getFeederstatus() {
- return this.http.get(prefix + "feeder/status").pipe(
- retry(1),
- map(this.extractData),
- catchError(this.handleError)
- );
+ return this.http
+ .get(prefix + "feeder/status")
+ .pipe(retry(1), map(this.extractData), catchError(this.handleError));
}
-
/*
Dashboard
*/
getDashboardList(): Observable<any> {
let url = prefix + "portals"; //onilne
- return this.http.get(url).pipe(
- retry(1),
- map(this.extractData),
- catchError(this.handleError)
- );
+ return this.http
+ .get(url)
+ .pipe(retry(1), map(this.extractData), catchError(this.handleError));
}
createUpadteDashboard(d: Dashboard): Observable<any> {
// let url = prefix +"/dashboard-list/successCreteOrEditDemo.json"; //local
- let url = prefix + "portals";//onilne
- return this.http
- .put(url, d)
- .pipe(
- retry(1),
- tap(_ => this.extractData),
- catchError(this.handleError)
- );
+ let url = prefix + "portals"; //onilne
+ return this.http.put(url, d).pipe(
+ retry(1),
+ tap(_ => this.extractData),
+ catchError(this.handleError)
+ );
}
deleteDashboard(d: Dashboard): Observable<any> {
let url = prefix + "portals"; //onilne
- return this.http
- .put(url, d)
- .pipe(
- retry(1),
- tap(_ => console.log(`deleted db name=${d.name}`)),
- catchError(this.handleError)
- );
+ return this.http.put(url, d).pipe(
+ retry(1),
+ tap(_ => console.log(`deleted db name=${d.name}`)),
+ catchError(this.handleError)
+ );
}
-
/*
Template
*/
getTemplateAll(): Observable<any> {
- return this.http.get(prefix + "designs/").pipe( //onlin
+ return this.http.get(prefix + "designs/").pipe(
+ //onlin
retry(1),
map(this.extractData),
catchError(this.handleError)
@@ -301,32 +274,26 @@ Dashboard
}
getTempDbList(id): Observable<any> {
- return this.http.get(prefix + "dbs/idAndName/" + id).pipe(
- retry(1),
- map(this.extractData),
- catchError(this.handleError)
- );
+ return this.http
+ .get(prefix + "dbs/idAndName/" + id)
+ .pipe(retry(1), map(this.extractData), catchError(this.handleError));
}
createNewTemplate(t: Template): Observable<any> {
- return this.http
- .post(prefix + "designs", t)
- .pipe(
- retry(1),
- tap(_ => this.extractData),
- catchError(this.handleError)
- );
+ return this.http.post(prefix + "designs", t).pipe(
+ retry(1),
+ tap(_ => this.extractData),
+ catchError(this.handleError)
+ );
}
updateNewTemplate(t: Template): Observable<any> {
let id = t.id;
- return this.http
- .put(prefix + "designs/" + id, t)
- .pipe(
- retry(1),
- tap(_ => this.extractData),
- catchError(this.handleError)
- );
+ return this.http.put(prefix + "designs/" + id, t).pipe(
+ retry(1),
+ tap(_ => this.extractData),
+ catchError(this.handleError)
+ );
}
// getTopicName(): Observable<any> {
@@ -338,7 +305,8 @@ Dashboard
// }
getTemplateTypeName(): Observable<any> {
- return this.http.get(prefix + "designTypes").pipe( //onlin
+ return this.http.get(prefix + "designTypes").pipe(
+ //onlin
retry(1),
map(this.extractData),
catchError(this.handleError)
@@ -346,7 +314,8 @@ Dashboard
}
DeleteTemplate(id): Observable<any> {
- return this.http.delete(prefix + "designs/" + id).pipe( //online
+ return this.http.delete(prefix + "designs/" + id).pipe(
+ //online
retry(1),
map(this.extractData2),
catchError(this.handleError)
@@ -354,7 +323,8 @@ Dashboard
}
deployTemplateKibana(id, body): Observable<any> {
body.submitted = true;
- return this.http.post(prefix + "designs/deploy/" + id, body).pipe( //online
+ return this.http.post(prefix + "designs/deploy/" + id, body).pipe(
+ //online
retry(1),
map(this.extractData2),
catchError(this.handleError)
@@ -364,15 +334,21 @@ Dashboard
/*
Kafka
*/
- getAllKafkaList() {
- return this.http.get(prefix + "kafkas").pipe( //online
- retry(1),
- map(this.extractData),
- catchError(this.handleError)
- );
+ public getAllKafkaList(): Observable<string[]> {
+ return this.http
+ .get<string[]>(prefix + "kafkas")
+ .pipe(retry(1), catchError(this.handleError));
+ }
+
+ public getKafka(id: string | number): Observable<Kafka> {
+ return this.http
+ .get<Kafka>(prefix + "kafkas/" + id)
+ .pipe(retry(1), catchError(this.handleError));
}
+
deleteKafka(id): Observable<any> {
- return this.http.delete(prefix + "kafkas/" + id).pipe( //online
+ return this.http.delete(prefix + "kafkas/" + id).pipe(
+ //online
retry(1),
map(this.extractData2),
catchError(this.handleError)
@@ -380,25 +356,19 @@ Dashboard
}
createNewKafka(k: Kafka): Observable<any> {
- return this.http
- .post(prefix + "kafkas", k)
- .pipe(
- retry(1),
- tap(_ => this.extractData),
- catchError(this.handleError)
- );
+ return this.http.post(prefix + "kafkas", k).pipe(
+ retry(1),
+ tap(_ => this.extractData),
+ catchError(this.handleError)
+ );
}
updateKafka(k: Kafka): Observable<any> {
let id = k.id;
- return this.http
- .put(prefix + "kafkas/" + id, k)
- .pipe(
- retry(1),
- tap(_ => this.extractData),
- catchError(this.handleError)
- );
+ return this.http.put(prefix + "kafkas/" + id, k).pipe(
+ retry(1),
+ tap(_ => this.extractData),
+ catchError(this.handleError)
+ );
}
}
-
-
diff --git a/components/datalake-handler/admin/src/src/app/shared/components/icon/icon.component.css b/components/datalake-handler/admin/src/src/app/shared/components/icon/icon.component.css
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/components/datalake-handler/admin/src/src/app/shared/components/icon/icon.component.css
diff --git a/components/datalake-handler/admin/src/src/app/shared/components/icon/icon.component.html b/components/datalake-handler/admin/src/src/app/shared/components/icon/icon.component.html
new file mode 100644
index 00000000..86d8ae26
--- /dev/null
+++ b/components/datalake-handler/admin/src/src/app/shared/components/icon/icon.component.html
@@ -0,0 +1,25 @@
+<!--
+============LICENSE_START=======================================================
+ONAP : DataLake
+================================================================================
+Copyright 2019 QCT
+=================================================================================
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+============LICENSE_END=========================================================
+-->
+
+<i *ngIf="this.type==='status'"
+ [class]="this.enabled ? 'fas fa-circle dl-icon-enable' : 'fas fa-circle dl-icon-disable'" aria-hidden="true"></i>
+
+<i *ngIf="this.type==='check'" [class]="this.enabled ? 'fas fa-check dl-icon-enable' : 'fas fa-check dl-icon-disable'"
+ aria-hidden="true"></i>
diff --git a/components/datalake-handler/admin/src/src/app/shared/components/icon/icon.component.spec.ts b/components/datalake-handler/admin/src/src/app/shared/components/icon/icon.component.spec.ts
new file mode 100644
index 00000000..481dc4b8
--- /dev/null
+++ b/components/datalake-handler/admin/src/src/app/shared/components/icon/icon.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { IconComponent } from './icon.component';
+
+describe('IconComponent', () => {
+ let component: IconComponent;
+ let fixture: ComponentFixture<IconComponent>;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ IconComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(IconComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/components/datalake-handler/admin/src/src/app/shared/components/icon/icon.component.ts b/components/datalake-handler/admin/src/src/app/shared/components/icon/icon.component.ts
new file mode 100644
index 00000000..12a7e9a5
--- /dev/null
+++ b/components/datalake-handler/admin/src/src/app/shared/components/icon/icon.component.ts
@@ -0,0 +1,40 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : DataLake
+ * ================================================================================
+ * Copyright 2019 QCT
+ *=================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+/**
+ *
+ * @author Ekko Chang
+ *
+ */
+import { Component, OnInit, Input, Output, EventEmitter } from "@angular/core";
+
+@Component({
+ selector: "app-icon",
+ templateUrl: "./icon.component.html",
+ styleUrls: ["./icon.component.css"]
+})
+export class IconComponent implements OnInit {
+ @Input() type: string;
+ @Input() enabled: boolean;
+
+ constructor() {}
+
+ ngOnInit() {}
+}
diff --git a/components/datalake-handler/admin/src/src/app/shared/modules/table/table.component.html b/components/datalake-handler/admin/src/src/app/shared/modules/table/table.component.html
index cf9be50c..c0e0971c 100644
--- a/components/datalake-handler/admin/src/src/app/shared/modules/table/table.component.html
+++ b/components/datalake-handler/admin/src/src/app/shared/modules/table/table.component.html
@@ -23,52 +23,46 @@ limitations under the License.
<ngx-datatable #mytemlate class="bootstrap" [rows]="data" [columnMode]="'force'" [headerHeight]="40"
[footerHeight]="40" [rowHeight]="50" [scrollbarV]="true" [scrollbarH]="true" [loadingIndicator]="loadingIndicator"
- [messages]="mesgNoData" [limit]="10">
+ [messages]="mesgNoData" [limit]="10" (activate)="rowOnActivate($event)">
<ngx-datatable-column sortable="column.sortable" *ngFor="let column of columns" [width]="column.width"
- name="{{ column.name | translate }}" prop="column.name" headerClass="d-flex justify-content-center"
- cellClass="d-flex justify-content-center">
-
+ headerClass="d-flex justify-content-center justify-content-start" cellClass="d-flex justify-content-center">
+ <!-- template of header -->
<ng-template ngx-datatable-header-template>
- <span *ngIf="column.name&&column.name.length!==0">{{ column.name | translate}}</span>
- <span *ngIf="column.src&&column.src.length!==0">
- <img [src]=column.src alt='Icon' style='height: 18px;' />
+
+ <!-- display string -->
+ <span *ngIf="column.headerName&&column.headerName.length!==0">{{ column.headerName | translate}}</span>
+
+ <!-- display icon -->
+ <span *ngIf="column.headerIcon&&column.headerIcon.length!==0">
+ <svg-icon [src]="column.headerIcon" [svgStyle]="{ 'height.px':20 }"></svg-icon>
</span>
</ng-template>
+ <!-- template of cell -->
<ng-template let-row="row" ngx-datatable-cell-template>
- <span *ngIf="column.dataIndex&&column.dataIndex.length!==0&&!column.svgicon">{{row[column.dataIndex]}}</span>
- <span *ngIf="column.renderText&&column.renderText.length!==0"></span>
- <span *ngIf="column.icontext&&column.icontext.length!==0">
- <app-button [text]="column.icontext" [style]="'inline'" [color]="'dark'">
- </app-button>
- </span>
+ <!-- display data -->
+ <span *ngIf="column.dataIndex&&column.dataIndex.length!==0&&!column.icon">{{row[column.dataIndex]}}</span>
- <span *ngIf="column.icon&&column.icon.length!==0">
- <app-button [text]="column.icon" [style]="'icon'" [color]="'dark'" (btnAction)="tableAction($event, row.id)">
- </app-button>
+ <!-- display button with text -->
+ <span *ngIf="column.textButton&&column.textButton.length!==0">
+ <app-button [text]="column.textButton" [style]="'inline'" [color]="'dark'"></app-button>
</span>
- <span *ngIf="column.svgicon&&column.svgicon.length!==0">
- <span *ngIf="row[column.dataIndex]">
- <svg-icon [src]="column.svgicon" [svgStyle]="{ 'width.px':20 }">
- </svg-icon>
- </span>
+ <!-- display button with icon -->
+ <span *ngIf="column.iconButton&&column.iconButton.length!==0">
+ <app-button [text]="column.iconButton" [style]="'icon'" [color]="'dark'"
+ (btnAction)="tableAction($event, row.id)"></app-button>
</span>
- </ng-template>
- </ngx-datatable-column>
-
- <!-- <ngx-datatable-column [width]="10" name="" sortable="true" cellClass="d-flex justify-content-center">
- <ng-template let-row="row" ngx-datatable-cell-template>
- <span>
- <button class="btn action-icon-setting" (click)="this.deleteTemplateModel(row.id);">
- <i class="fas fa-trash-alt fa-xs"></i>
- </button>
+ <!-- display pure icon -->
+ <span *ngIf="column.icon&&column.icon.length!==0">
+ <app-icon [type]="column.icon" [enabled]="row[column.dataIndex]"></app-icon>
</span>
+
</ng-template>
- </ngx-datatable-column> -->
+ </ngx-datatable-column>
</ngx-datatable>
</div>
-</div> \ No newline at end of file
+</div>
diff --git a/components/datalake-handler/admin/src/src/app/shared/modules/table/table.component.ts b/components/datalake-handler/admin/src/src/app/shared/modules/table/table.component.ts
index 9c69e125..8adb8370 100644
--- a/components/datalake-handler/admin/src/src/app/shared/modules/table/table.component.ts
+++ b/components/datalake-handler/admin/src/src/app/shared/modules/table/table.component.ts
@@ -1,19 +1,19 @@
-import {Component, OnInit, Input, Output, EventEmitter} from '@angular/core';
+import { Component, OnInit, Input, Output, EventEmitter } from "@angular/core";
/**
* @contributor Chunmeng Guo
*/
@Component({
- selector: 'app-table',
- templateUrl: './table.component.html',
- styleUrls: ['./table.component.css']
+ selector: "app-table",
+ templateUrl: "./table.component.html",
+ styleUrls: ["./table.component.css"]
})
export class TableComponent implements OnInit {
@Input() columns: Array<any> = [];
@Input() data: Array<any> = [];
- @Output() btnTableAction = new EventEmitter<object>()
- loadingIndicator: boolean = false;
+ @Output() btnTableAction = new EventEmitter<object>();
+ loadingIndicator: boolean = true;
template_list: Array<any> = [];
mesgNoData = {
@@ -26,16 +26,30 @@ export class TableComponent implements OnInit {
`
};
- constructor() { }
+ constructor() {}
ngOnInit() {
-
+ setTimeout(() => {
+ this.loadingIndicator = false;
+ }, 500);
}
- tableAction($event, actionId: number) {
+ tableAction(event: any, actionId: number) {
+ console.log("action id: " + actionId);
+ console.log("edit: " + event.row.id);
let passValueArr: Array<any> = [];
- passValueArr.push($event);
+ passValueArr.push(event);
passValueArr.push(actionId);
this.btnTableAction.emit(passValueArr);
}
+
+ rowOnActivate(event: any) {
+ const emitType = event.type;
+ if (emitType == "dblclick") {
+ console.log("Activate Event", event);
+ let name = event.row.id;
+ // this.openTopicModal(name);
+ console.log("row name: " + name);
+ }
+ }
}
diff --git a/components/datalake-handler/admin/src/src/app/views/test/test.component.ts b/components/datalake-handler/admin/src/src/app/views/test/test.component.ts
index b8a67fb5..ca498054 100644
--- a/components/datalake-handler/admin/src/src/app/views/test/test.component.ts
+++ b/components/datalake-handler/admin/src/src/app/views/test/test.component.ts
@@ -60,47 +60,52 @@ export class TestComponent implements OnInit {
ngOnInit() {
this.mockcolumns = [
{
- name: "TEMPLATE_NAME",
- width: "100",
- dataIndex: "name",
- sortable: true
+ headerName: "STATUS",
+ width: "20",
+ dataIndex: "enabled",
+ sortable: true,
+ icon: "status"
},
{
- name: "TEMPLATE_TYPE",
- width: "180",
- dataIndex: "type"
+ headerName: "2",
+ width: "100",
+ dataIndex: "type",
+ icon: "status"
},
{
- name: "TOPICS_NAME",
- width: "220",
+ headerName: "3",
+ width: "200",
dataIndex: "topic",
- renderText: "3"
+ renderText: "zzzz"
},
{
- name: "",
- src: "assets/icons/couchbase_able.svg",
- width: "220",
+ headerIcon: "assets/icons/couchbase_able.svg",
+ width: "200",
dataIndex: "cc",
+ renderText: "zzzzz"
},
{
- name: "DEPLOY_TO_DASHBOARD",
- width: "100",
+ headerName: "5",
+ width: "50",
dataIndex: "",
- icontext: "DEPLOY",
+ textButton: "DEPLOY1"
},
{
- name: "",
width: "20",
- icon: "trash"
+ iconButton: "cog"
},
{
- name: "Configured",
+ headerName: "Configured",
width: "100",
dataIndex: "configured",
- svgicon: "assets/icons/add.svg"
- // icontext: "DEPLOY",
- //svg: "assets/icons/add.svg", // TODO: icon
+ icon: "check"
},
+ {
+ headerName: "TTL",
+ width: "100",
+ dataIndex: "saveRaw",
+ icon: "check"
+ }
];
this.mocktabledata = [
{
@@ -108,39 +113,45 @@ export class TestComponent implements OnInit {
type: "333",
topic: "尽快尽快",
cc: "123",
- configured: true
+ configured: true,
+ saveRaw: true,
+ enabled: true
},
{
name: "ccccc",
type: "666",
topic: "2222",
cc: "222",
- configured: true
+ configured: true,
+ saveRaw: true,
+ enabled: false
},
{
name: "bbbbb",
type: "77777",
topic: "555",
cc: "5",
- configured: false
+ configured: false,
+ saveRaw: false,
+ enabled: false
}
];
// Modal example
// Data for different components of modal body
// Example for topic, not only topic but also db, design or tools
- this.topic = new Topic();
- this.topic.name = "topic.name (test)";
- this.topic.login = "123";
- this.topic.password = "123";
- this.topic.sinkdbs = "";
- this.topic.enabled = true;
- this.topic.saveRaw = true;
- this.topic.dataFormat = "";
- this.topic.ttl = 123;
- this.topic.correlateClearedMessage = true;
- this.topic.messageIdPath = "";
- this.topic.type = false;
+ // this.topic = new Topic();
+ // this.topic.name = "topic.name (test)";
+ // this.topic.login = "123";
+ // this.topic.password = "123";
+ // this.topic.sinkdbs = "";
+ // this.topic.enabled = true;
+ // this.topic.saveRaw = true;
+ // this.topic.dataFormat = "";
+ // this.topic.ttl = 123;
+ // this.topic.correlateClearedMessage = true;
+ // this.topic.messageIdPath = "";
+ // this.topic.type = false;
// Modal example end
// Card example
@@ -191,14 +202,13 @@ export class TestComponent implements OnInit {
}
cardMoreAction($event) {
- if($event == "edit"){
- this.openModalDemo()
- }else {
- console.log($event,"$event")
+ if ($event == "edit") {
+ this.openModalDemo();
+ } else {
+ console.log($event, "$event");
}
}
- cardClick(){
+ cardClick() {
this.openModalDemo();
}
-
}
diff --git a/components/datalake-handler/admin/src/src/app/views/topics/topic-list/new-topic-model/new-topic-model.component.ts b/components/datalake-handler/admin/src/src/app/views/topics/topic-list/new-topic-model/new-topic-model.component.ts
index 04bd331d..b1d782dc 100644
--- a/components/datalake-handler/admin/src/src/app/views/topics/topic-list/new-topic-model/new-topic-model.component.ts
+++ b/components/datalake-handler/admin/src/src/app/views/topics/topic-list/new-topic-model/new-topic-model.component.ts
@@ -28,9 +28,9 @@ import { AdminService } from "src/app/core/services/admin.service";
import { Topic } from "src/app/core/models/topic.model";
@Component({
- selector: 'app-new-topic-model',
- templateUrl: './new-topic-model.component.html',
- styleUrls: ['./new-topic-model.component.css']
+ selector: "app-new-topic-model",
+ templateUrl: "./new-topic-model.component.html",
+ styleUrls: ["./new-topic-model.component.css"]
})
export class NewTopicModelComponent implements OnInit {
@Input() newTopic: Topic;
@@ -57,46 +57,46 @@ export class NewTopicModelComponent implements OnInit {
}
ngOnInit() {
- this.newTopic = {
- name: "",
- login: "",
- password: "",
- sinkdbs: [],
- enabledSinkdbs: [],
- enabled: false,
- saveRaw: false,
- dataFormat: this.dataFormats[0],
- ttl: null,
- correlateClearedMessage: false,
- messageIdPath: null,
- type: null
- };
- this.TopicInput = new Topic();
- const feeds = {
- name: this.newTopic.name,
- login: this.newTopic.login,
- password: this.newTopic.password,
- sinkdbs: this.newTopic.sinkdbs,
- enabledSinkdbs: this.newTopic.sinkdbs,
- enabled: this.newTopic.enabled,
- saveRaw: this.newTopic.saveRaw,
- dataFormat: this.newTopic.dataFormat,
- ttl: this.newTopic.ttl,
- correlateClearedMessage: this.newTopic.correlateClearedMessage,
- messageIdPath: this.newTopic.messageIdPath,
- type: null
- };
- this.TopicInput = feeds;
- this.idExFields = [];
- if (this.TopicInput.messageIdPath != null) {
- var feed = this.TopicInput.messageIdPath.split(",");
- for (var i = 0; i < feed.length; i++) {
- var data = { item: feed[i] };
- this.idExFields.push(data);
- }
- } else {
- this.idExFields.push([]);
- }
+ // this.newTopic = {
+ // name: "",
+ // login: "",
+ // password: "",
+ // sinkdbs: [],
+ // enabledSinkdbs: [],
+ // enabled: false,
+ // saveRaw: false,
+ // dataFormat: this.dataFormats[0],
+ // ttl: null,
+ // correlateClearedMessage: false,
+ // messageIdPath: null,
+ // type: null
+ // };
+ // this.TopicInput = new Topic();
+ // const feeds = {
+ // name: this.newTopic.name,
+ // login: this.newTopic.login,
+ // password: this.newTopic.password,
+ // sinkdbs: this.newTopic.sinkdbs,
+ // enabledSinkdbs: this.newTopic.sinkdbs,
+ // enabled: this.newTopic.enabled,
+ // saveRaw: this.newTopic.saveRaw,
+ // dataFormat: this.newTopic.dataFormat,
+ // ttl: this.newTopic.ttl,
+ // correlateClearedMessage: this.newTopic.correlateClearedMessage,
+ // messageIdPath: this.newTopic.messageIdPath,
+ // type: null
+ // };
+ // this.TopicInput = feeds;
+ // this.idExFields = [];
+ // if (this.TopicInput.messageIdPath != null) {
+ // var feed = this.TopicInput.messageIdPath.split(",");
+ // for (var i = 0; i < feed.length; i++) {
+ // var data = { item: feed[i] };
+ // this.idExFields.push(data);
+ // }
+ // } else {
+ // this.idExFields.push([]);
+ // }
}
getDbs() {
@@ -144,8 +144,7 @@ export class NewTopicModelComponent implements OnInit {
if (i == 0) {
this.newTopic.messageIdPath = item;
} else {
- this.newTopic.messageIdPath =
- this.newTopic.messageIdPath + "," + item;
+ this.newTopic.messageIdPath = this.newTopic.messageIdPath + "," + item;
}
}
// Reset to default
@@ -155,5 +154,4 @@ export class NewTopicModelComponent implements OnInit {
console.log(this.newTopic);
this.passEntry.emit(this.newTopic);
}
-
-} \ No newline at end of file
+}
diff --git a/components/datalake-handler/admin/src/src/app/views/topics/topic-list/topic-detail-modal/topic-detail-modal.component.ts b/components/datalake-handler/admin/src/src/app/views/topics/topic-list/topic-detail-modal/topic-detail-modal.component.ts
index e2dd1825..17d0d036 100644
--- a/components/datalake-handler/admin/src/src/app/views/topics/topic-list/topic-detail-modal/topic-detail-modal.component.ts
+++ b/components/datalake-handler/admin/src/src/app/views/topics/topic-list/topic-detail-modal/topic-detail-modal.component.ts
@@ -143,9 +143,9 @@ export class TopicDetailModalComponent implements OnInit {
// Reset to default
if (this.topic.sinkdbs.length == 0) {
- this.topic.type = false;
+ this.topic.config = false;
} else {
- this.topic.type = true;
+ this.topic.config = true;
}
this.passEntry.emit(this.topic);
}
diff --git a/components/datalake-handler/admin/src/src/app/views/topics/topic-list/topic-list.component.html b/components/datalake-handler/admin/src/src/app/views/topics/topic-list/topic-list.component.html
index e4596f68..3fbbc420 100644
--- a/components/datalake-handler/admin/src/src/app/views/topics/topic-list/topic-list.component.html
+++ b/components/datalake-handler/admin/src/src/app/views/topics/topic-list/topic-list.component.html
@@ -27,150 +27,24 @@ limitations under the License.
<div class="input-group">
<input #searchText type="text" class="form-control dl-input-text-search" placeholder="Search..."
(keyup)="this.updateFilter($event.target.value)" />
- <div class="input-group-append">
- <button type="button" class="btn dl-btn-dark">
- <i class="fa fa-search"></i>
- </button>
- </div>
</div>
</div>
+
<!-- button -->
<div class="p-1">
- <button style="margin-right: 0.5rem;" class="btn dl-btn-dark" (click)="openTopicModal('config')">
- {{ "DEFAULT_CONFIGURATIONS" | translate }}
- </button>
- <button class="btn dl-btn-dark" (click)="openNewTopicModal()">
- {{ "NEW_TOPIC" | translate }}
- </button>
+ <app-button [text]="'DEFAULT_CONFIGURATIONS'" [style]="'inline'" [color]="'dark'" (click)="buttonAction('default')"></app-button>
+ </div>
+ <div class="p-1">
+ <app-button [text]="'plus'" [style]="'inlineicon'" [color]="'dark'" (click)="buttonAction('new')"></app-button>
</div>
</div>
</div>
</div>
+
<!-- datatable -->
<div class="row">
<div class="col-md-12">
- <ngx-datatable #mydatatable class="bootstrap" [rows]="topics" [columnMode]="'force'" [headerHeight]="40"
- [footerHeight]="40" [rowHeight]="50" [scrollbarV]="true" [scrollbarH]="true"
- [loadingIndicator]="loadingIndicator" [messages]="mesgNoData" [limit]="10"
- (activate)="onActivate($event)">
-
- <ngx-datatable-column [width]="20" name="{{ 'STATUS' | translate }}" prop="enabled"
- headerClass="d-flex justify-content-center" cellClass="d-flex justify-content-center">
- <div>
- <ng-template let-row="row" ngx-datatable-cell-template>
- <span *ngIf="row.enabled">
- <i class="fas fa-circle dl-icon-enable" aria-hidden="true"></i>
- </span>
- <span *ngIf="!row.enabled">
- <i class="fas fa-circle dl-icon-disable" aria-hidden="true"></i>
- </span>
- </ng-template>
- </div>
- </ngx-datatable-column>
-
- <ngx-datatable-column [width]="450" name="{{ 'NAME' | translate }}" prop="name">
- <ng-template let-row="row" ngx-datatable-cell-template>
- <span>{{ row.name }}</span>
- </ng-template>
- </ngx-datatable-column>
-
- <ngx-datatable-column [width]="25" name="{{ 'SETTING' | translate }}" prop="type"
- headerClass="d-flex justify-content-center" cellClass="d-flex justify-content-center">
- <div>
- <ng-template let-row="row" ngx-datatable-cell-template>
- <span *ngIf="row.type">
- <i class="fas fa-check dl-icon-enable" aria-hidden="true"></i>
- </span>
- <!-- <span *ngIf="!row.type">
- <i class="fas fa-check dl-icon-disable" aria-hidden="true"></i>
- </span> -->
- </ng-template>
- </div>
- </ngx-datatable-column>
-
- <ngx-datatable-column [width]="10" name="Ka" prop="kafkas" headerClass="d-flex justify-content-center" cellClass="d-flex justify-content-center">
- <ng-template let-column="column" ngx-datatable-header-template>
- <img src="assets/icons/kafka_able.svg" alt="Icon" style=" height: 20px; "/>
- </ng-template>
- </ngx-datatable-column>
-
- <ngx-datatable-column [width]="10" name="CB" prop="CB" headerClass="d-flex justify-content-center" cellClass="d-flex justify-content-center">
- <ng-template let-column="column" ngx-datatable-header-template>
- <img src="assets/icons/couchbase_able.svg" alt="Icon" style=" height: 20px; "/>
- </ng-template>
- </ngx-datatable-column>
-
- <ngx-datatable-column [width]="10" name="DR" prop="DRUID" headerClass="d-flex justify-content-center" cellClass="d-flex justify-content-center">
- <ng-template let-column="column" ngx-datatable-header-template>
- <img src="assets/icons/druid_able.svg" alt="Icon" style=" height: 16px; "/>
- </ng-template>
- </ngx-datatable-column>
-
- <ngx-datatable-column [width]="10" name="ES" prop="ES" headerClass="d-flex justify-content-center" cellClass="d-flex justify-content-center">
- <ng-template let-column="column" ngx-datatable-header-template>
- <img src="assets/icons/elasticsearch_able.svg" alt="Icon" style=" height: 20px; "/>
- </ng-template>
- </ngx-datatable-column>
-
- <ngx-datatable-column [width]="10" name="MG" prop="MONGO" headerClass="d-flex justify-content-center" cellClass="d-flex justify-content-center">
- <ng-template let-column="column" ngx-datatable-header-template>
- <img src="assets/icons/mongoDB_able.svg" alt="Icon" style=" height: 23px; "/>
- </ng-template>
- </ngx-datatable-column>
-
- <ngx-datatable-column [width]="10" name="HD" prop="HDFS" headerClass="d-flex justify-content-center" cellClass="d-flex justify-content-center">
- <ng-template let-column="column" ngx-datatable-header-template>
- <img src="assets/icons/hadoop_able.svg" alt="Icon" style=" height: 20px; "/>
- </ng-template>
- </ngx-datatable-column>
-
- <ngx-datatable-column [width]="20" name="{{ 'TTL' | translate }}" prop="ttl"
- headerClass="d-flex justify-content-center" cellClass="d-flex justify-content-center">
- <ng-template let-row="row" ngx-datatable-cell-template>
- <span>{{ row.ttl }}</span>
- </ng-template>
- </ngx-datatable-column>
-
- <ngx-datatable-column [width]="20" name="{{ 'SAVE_RAW_DATA' | translate }}" prop="saveRaw"
- headerClass="d-flex justify-content-center" cellClass="d-flex justify-content-center">
- <div>
- <ng-template let-row="row" ngx-datatable-cell-template>
- <span *ngIf="row.saveRaw">
- <i class="fas fa-check dl-icon-enable" aria-hidden="true"></i>
- </span>
- <!-- <span *ngIf="!row.saveRaw"> -->
- <!-- <i class="fas fa-check dl-icon-disable" aria-hidden="true"></i> -->
- <!-- </span> -->
- </ng-template>
- </div>
- </ngx-datatable-column>
-
- <ngx-datatable-column [width]="10" name="" sortable="false" cellClass="d-flex justify-content-center">
- <ng-template let-row="row" ngx-datatable-cell-template>
- <span>
- <button class="btn action-icon-setting" (click)="this.deleteTopicModal(row.name);">
- <i class="fas fa-trash-alt fa-xs"></i>
- </button>
- </span>
- </ng-template>
- </ngx-datatable-column>
-
- <ngx-datatable-footer>
- <ng-template ngx-datatable-footer-template let-rowCount="rowCount" let-pageSize="pageSize"
- let-selectedCount="selectedCount" let-curPage="curPage" let-offset="offset"
- let-isVisible="isVisible">
- <div class="page-count">
- total: {{ rowCount.toLocaleString() }}
- </div>
- <datatable-pager [pagerLeftArrowIcon]="'datatable-icon-left'" [pagerRightArrowIcon]="'datatable-icon-right'"
- [pagerPreviousIcon]="'datatable-icon-prev'" [pagerNextIcon]="'datatable-icon-skip'"
- [page]="curPage"
- [size]="pageSize" [count]="rowCount" [hidden]="!(rowCount / pageSize > 1)"
- (change)="topicTable.onFooterPage($event)">
- </datatable-pager>
- </ng-template>
- </ngx-datatable-footer>
- </ngx-datatable>
+ <app-table [data]="topics" [columns]="columns"></app-table>
</div>
</div>
-</div> \ No newline at end of file
+</div>
diff --git a/components/datalake-handler/admin/src/src/app/views/topics/topic-list/topic-list.component.ts b/components/datalake-handler/admin/src/src/app/views/topics/topic-list/topic-list.component.ts
index dbb2706c..d2d983f9 100644
--- a/components/datalake-handler/admin/src/src/app/views/topics/topic-list/topic-list.component.ts
+++ b/components/datalake-handler/admin/src/src/app/views/topics/topic-list/topic-list.component.ts
@@ -39,7 +39,11 @@ import { ToastrNotificationService } from "src/app/shared/components/toastr-noti
// Loading spinner
import { NgxSpinnerService } from "ngx-spinner";
-import { AlertComponent } from "../../../shared/components/alert/alert.component";
+
+import { AlertComponent } from "src/app/shared/components/alert/alert.component";
+import { map, mergeMap } from "rxjs/operators";
+import { forkJoin, from } from "rxjs";
+import { HttpClient } from "@angular/common/http";
@Component({
selector: "app-topic-list",
@@ -47,336 +51,461 @@ import { AlertComponent } from "../../../shared/components/alert/alert.component
styleUrls: ["./topic-list.component.css"]
})
export class TopicListComponent {
- topicListDmaap: any = [];
- topicListFeeder: any = [];
- topicDefaultConfig: Topic;
-
- topics: Topic[] = [];
- temp: Topic[] = []; // cache for topics
- tempTopicDetail: Topic; // temp for a topic
- tempNewTopic: Topic; // temp for a newtopic
-
- loadingIndicator: boolean = true;
- mesgNoData = {
- emptyMessage: `
- <div class="d-flex justify-content-center">
- <div class="p-2">
- <label class="dl-nodata">No Data</label>
- </div>
- </div>
- `
- };
-
- @ViewChild("searchText") searchText: ElementRef;
- @ViewChild("mydatatable") topicTable;
+ topics: Array<Topic> = []; // data of table
+ columns: Array<any> = []; // column of table
+ t_temp: Array<Topic> = []; // cache for topics
+
+ //TODO
+ //tempTopicDetail: Topic; // temp for a topic
+ //tempNewTopic: Topic; // temp for a newtopic
constructor(
private restApiService: RestApiService,
private modalService: NgbModal,
private notificationService: ToastrNotificationService,
- private spinner: NgxSpinnerService
- ) {
- setTimeout(() => {
- this.loadingIndicator = false;
- }, 5000);
- this.init()
-
- }
+ private spinner: NgxSpinnerService,
+ public http: HttpClient
+ ) {}
ngOnInit() {
- this.spinner.show();
- }
-
- init() {
- this.initData().then(data => {
- this.initTopicList(this.topicListDmaap, this.topicListFeeder).then(
- data => {
- // for cache of datatable
- this.temp = [...data];
- this.topics = data;
- setTimeout(() => {
- this.spinner.hide();
- }, 500);
- }
- );
+ //this.spinner.show();
+ let t_feeder: Array<Topic> = [];
+ let t_kafka: Object = {};
+
+ const get_t_feeder = this.restApiService.getTopicList().pipe(
+ mergeMap(ids => from(ids)),
+ mergeMap(id => this.restApiService.getTopic(id)),
+ map(t => {
+ t.config = true;
+ t_feeder.push(t);
+ })
+ );
+
+ const get_t_kafka = this.restApiService.getAllKafkaList().pipe(
+ mergeMap(ids => from(ids)),
+ mergeMap(id =>
+ this.restApiService
+ .getTopicListFromKafka(id)
+ .pipe(map(t => (t_kafka[id] = t)))
+ )
+ );
+
+ const get_t_default = this.restApiService.getTopicDefault();
+
+ forkJoin(get_t_feeder, get_t_kafka, get_t_default).subscribe(data => {
+ this.columns = this.initColumn();
+ this.topics = this.initRow(t_feeder, t_kafka, data[2]);
+ this.t_temp = [...this.topics];
+ // setTimeout(() => {
+ // //this.spinner.hide();
+ // this.loadingIndicator = false;
+ // }, 500);
});
}
- async initData() {
- this.topicListFeeder = [];
- this.topicListFeeder = await this.getTopicList("feeder");
-
- this.topicDefaultConfig = new Topic();
- this.topicDefaultConfig = await this.getTopicDefaultConfig();
-
- return true;
- }
-
- getTopicList(type: string) {
- var data: any;
-
- switch (type) {
- case "feeder": {
- data = this.restApiService.getTopicsFromFeeder().toPromise();
- break;
- }
- }
- return data;
- }
-
- getTopicDefaultConfig() {
- return this.restApiService.getTopicDefaultConfig().toPromise();
- }
-
- async initTopicList(dmaapList: [], feederList: []) {
- var t: Topic[] = [];
-
- // dmaap has no topics, only show topic in db
- for (var i = 0; i < feederList.length; i++) {
- let data = await this.getTopicDetail(feederList[i]);
- let dbinfo = [];
- var totalCB = 0;
- var totalDRUID = 0;
- var totalES = 0;
- var totalHDFS = 0;
- var totalMONGO = 0;
- for (var x = 0; x < data.enabledSinkdbs.length; x++) {
- let dbdata = await this.getDbDetail(data.enabledSinkdbs[x]);
- dbinfo.push(dbdata);
- if (dbinfo!=undefined && dbinfo[x].type=="CB"){
- totalCB = totalCB + 1;
- }if (dbinfo!=undefined && dbinfo[x].type=="DRUID"){
- totalDRUID = totalDRUID + 1;
- }if (dbinfo!=undefined && dbinfo[x].type=="ES"){
- totalES = totalES + 1;
- }if (dbinfo!=undefined && dbinfo[x].type=="HDFS"){
- totalHDFS = totalHDFS + 1;
- }if (dbinfo!=undefined && dbinfo[x].type=="MONGO"){
- totalMONGO = totalMONGO + 1;
- }
- }
-
- let feed = {
- name: data.name,
- login: data.login,
- password: data.password,
- enabledSinkdbs: data.enabledSinkdbs,
- sinkdbs: data.sinkdbs,
- enabled: data.enabled,
- saveRaw: data.saveRaw,
- dataFormat: data.dataFormat,
- ttl: data.ttl,
- correlateClearedMessage: data.correlateClearedMessage,
- messageIdPath: data.messageIdPath,
- kafkas: data.kafkas.length,
- type: data.type,
- CB: totalCB,
- DRUID: totalDRUID,
- ES: totalES,
- HDFS: totalHDFS,
- MONGO: totalMONGO
- };
- t.push(feed);
+ initColumn() {
+ let t_columns: Array<any> = [];
+
+ t_columns = [
+ {
+ headerName: "STATUS",
+ width: "15",
+ sortable: true,
+ dataIndex: "enabled",
+ icon: "status"
+ },
+ {
+ headerName: "NAME",
+ width: "420",
+ sortable: true,
+ dataIndex: "name"
+ },
+ {
+ headerName: "SETTING",
+ width: "30",
+ sortable: true,
+ dataIndex: "config",
+ icon: "check"
+ },
+ {
+ headerIcon: "assets/icons/kibana_able.svg",
+ width: "10",
+ sortable: true,
+ dataIndex: "kafkas"
+ },
+ {
+ headerIcon: "assets/icons/couchbase_able.svg",
+ width: "10",
+ sortable: true,
+ dataIndex: "sinkdbs"
+ },
+ {
+ headerIcon: "assets/icons/druid_able.svg",
+ width: "10",
+ sortable: true,
+ dataIndex: "sinkdbs"
+ },
+ {
+ headerIcon: "assets/icons/elasticsearch_able.svg",
+ width: "10",
+ sortable: true,
+ dataIndex: "sinkdbs"
+ },
+ {
+ headerIcon: "assets/icons/mongoDB_able.svg",
+ width: "10",
+ sortable: true,
+ dataIndex: "sinkdbs"
+ },
+ {
+ headerIcon: "assets/icons/hadoop_able.svg",
+ width: "10",
+ sortable: true,
+ dataIndex: "sinkdbs"
+ },
+ {
+ headerName: "TTL",
+ width: "20",
+ sortable: true,
+ dataIndex: "ttl"
+ },
+ {
+ headerName: "SAVE_RAW_DATA",
+ width: "20",
+ sortable: true,
+ dataIndex: "saveRaw",
+ icon: "check"
+ },
+ {
+ width: "20",
+ iconButton: "cog"
}
- return t;
- }
-
- onActivate(event) {
- const emitType = event.type;
- if (emitType == "dblclick") {
- console.log('Activate Event', event);
- let name = event.row.name;
- this.openTopicModal(name);
- }
-
- }
-
- openNewTopicModal() {
- const modalRef = this.modalService.open(NewTopicModelComponent, {
- size: "lg",
- centered: true
- });
- modalRef.componentInstance.newTopic = this.tempNewTopic;
- modalRef.componentInstance.passEntry.subscribe(receivedEntry => {
- console.log(receivedEntry, "newtopic receivedEntry");
- this.tempNewTopic = receivedEntry;
- this.restApiService.addNewTopic(this.tempNewTopic).subscribe(
- res => {
- this.init();
- this.notificationService.success("SUCCESSFULLY_CREARED");
- modalRef.close();
- this.updateFilter(this.searchText.nativeElement.value);
- },
- err => {
- this.notificationService.error(err);
- modalRef.close();
- this.updateFilter(this.searchText.nativeElement.value);
- }
- );
- })
-
+ ];
+ return t_columns;
}
- openTopicModal(name: string) {
- if (name == "config") {
- const modalRef = this.modalService.open(TopicConfigModalComponent, {
- windowClass: "dl-md-modal",
- centered: true
- });
- modalRef.componentInstance.title = "Topics Default Configurations";
- modalRef.componentInstance.topic = this.topicDefaultConfig;
- modalRef.componentInstance.passEntry.subscribe(receivedEntry => {
- this.restApiService
- .updateTopicDefaultConfig(this.topicDefaultConfig)
- .subscribe(
- res => {
- this.topicDefaultConfig = receivedEntry;
- this.topics.forEach(t => {
- if (!t.type) {
- // Unconfigure topics
- t.login = this.topicDefaultConfig.login;
- t.password = this.topicDefaultConfig.password;
- t.enabledSinkdbs = this.topicDefaultConfig.enabledSinkdbs;
- // t.sinkdbs = this.topicDefaultConfig.sinkdbs; //todo
- t.enabled = this.topicDefaultConfig.enabled;
- t.saveRaw = this.topicDefaultConfig.saveRaw;
- t.dataFormat = this.topicDefaultConfig.dataFormat;
- t.ttl = this.topicDefaultConfig.ttl;
- t.correlateClearedMessage = this.topicDefaultConfig.correlateClearedMessage;
- t.messageIdPath = this.topicDefaultConfig.messageIdPath;
- }
- });
- this.notificationService.success("Success updated.");
- modalRef.close();
- },
- err => {
- this.notificationService.error(err);
- modalRef.close();
- }
- );
- });
- } else {
- const index = this.temp.findIndex(t => t.name === name);
- const modalRef = this.modalService.open(TopicDetailModalComponent, {
- size: "lg",
- centered: true
- });
- modalRef.componentInstance.topic = this.temp[index];
- modalRef.componentInstance.passEntry.subscribe(receivedEntry => {
- this.tempTopicDetail = receivedEntry;
- // Configured topic
- if (this.tempTopicDetail.type) {
- this.restApiService.getTopicsFromFeeder().subscribe(
- res => {
- if (res.find(name => name === this.tempTopicDetail.name)) {
- // Update topic from db
- this.restApiService.upadteTopic(this.tempTopicDetail).subscribe(
- res => {
- this.temp[index] = this.tempTopicDetail;
- this.topics = this.temp;
- this.notificationService.success("SUCCESSFULLY_UPDATED");
- modalRef.close();
- this.updateFilter(this.searchText.nativeElement.value);
- },
- err => {
- this.notificationService.error(err);
- modalRef.close();
- this.updateFilter(this.searchText.nativeElement.value);
- }
- );
- } else {
- // Insert topic from db
- this.restApiService.addTopic(this.tempTopicDetail).subscribe(
- res => {
- this.init();
- this.notificationService.success("SUCCESSFULLY_CREARED");
- modalRef.close();
- this.updateFilter(this.searchText.nativeElement.value);
- },
- err => {
- this.notificationService.error(err);
- modalRef.close();
- this.updateFilter(this.searchText.nativeElement.value);
- }
- );
- }
- },
- err => {
- this.notificationService.error(err);
- modalRef.close();
- }
- );
- } else {
- // Reset to default and delete topic from db
- this.restApiService.deleteTopic(this.tempTopicDetail.name).subscribe(
- res => {
- this.init();
- this.notificationService.success("SUCCESSFULLY_DELETED");
- modalRef.close();
- this.updateFilter(this.searchText.nativeElement.value);
- },
- err => {
- this.notificationService.error(err);
- modalRef.close();
- this.updateFilter(this.searchText.nativeElement.value);
- }
- );
+ initRow(t_feeder: Array<Topic>, t_kafka: Object, t_default: Topic) {
+ let t_topics: Array<Topic> = [];
+
+ // Save topics which are already configured.
+ t_topics = t_feeder;
+
+ // Save the topic which is unconfigured yet.
+ Object.keys(t_kafka).forEach(k_id => {
+ Object.values(t_kafka[k_id]).forEach((k_t_name: string) => {
+ let found: Topic = t_feeder.find(
+ t =>
+ t.name == k_t_name &&
+ t.kafkas.map(ids => ids.toString()).includes(k_id)
+ );
+ if (!found) {
+ let seed: Topic;
+ seed = JSON.parse(JSON.stringify(t_default));
+ seed.id = null;
+ seed.name = k_t_name;
+ seed.kafkas = [];
+ seed.kafkas.push(k_id);
+ seed.config = false;
+ t_topics.push(seed);
}
});
- }
- }
-
- deleteTopicModal(name: string) {
- const index = this.temp.findIndex(t => t.name === name);
- const modalRef = this.modalService.open(AlertComponent, {
- size: "sm",
- centered: true
});
- modalRef.componentInstance.message = "ARE_YOU_SURE_DELETE";
- console.log(this.temp[index]);
- modalRef.componentInstance.passEntry.subscribe(receivedEntry => {
- this.restApiService.deleteTopic(this.temp[index].name).subscribe(
- res => {
- this.init();
- this.notificationService.success("SUCCESSFULLY_DELETED");
- modalRef.close();
- this.updateFilter(this.searchText.nativeElement.value);
- },
- err => {
- this.notificationService.error(err);
- modalRef.close();
- this.updateFilter(this.searchText.nativeElement.value);
- }
- );
- })
+ return t_topics;
}
- getTopicDetail(id) {
- return this.restApiService.getTopicDetail(id).toPromise();
- }
-
- getDbDetail(id) {
- return this.restApiService.getDbDetail(id).toPromise();
+ buttonAction(string: string = "") {
+ switch (string) {
+ case "new":
+ // Open new topic modal
+ console.log("new modal");
+ break;
+ case "edit":
+ // Open edit of topic modal
+ console.log("edit modal");
+ break;
+ case "default":
+ // Open default config of topic modal
+ console.log("default modal");
+ break;
+ default:
+ this.notificationService.success(string + " action successful!");
+ break;
+ }
}
- GroupByDbType = (array, key) => {
- return array.reduce((result, currentValue) => {
- (result[currentValue.type] = result[currentValue.type] || []).push(currentValue);
- return result;
- }, {});
- };
-
updateFilter(searchValue) {
const val = searchValue.toLowerCase();
// filter our data
- const temp = this.temp.filter(function (d) {
- return d.name.toLowerCase().indexOf(val) !== -1 || !val;
+ const temp = this.t_temp.filter(t => {
+ return t.name.toLowerCase().indexOf(val) !== -1 || !val;
});
// update the rows
this.topics = temp;
}
-} \ No newline at end of file
+
+ // async initData() {
+ // this.topicListFeeder = [];
+ // this.topicListFeeder = await this.getTopicList("feeder");
+
+ // //this.topicDefaultConfig = new Topic();
+ // this.topicDefaultConfig = await this.getTopicDefaultConfig();
+
+ // return true;
+ // }
+
+ // getTopicList(type: string) {
+ // var data: any;
+
+ // switch (type) {
+ // case "feeder": {
+ // data = this.restApiService.getTopicsFromFeeder().toPromise();
+ // break;
+ // }
+ // }
+ // return data;
+ // }
+
+ // getTopicDefaultConfig() {
+ // return this.restApiService.getTopicDefaultConfig().toPromise();
+ // }
+
+ // async initTopicList(dmaapList: [], feederList: []) {
+ // // var t: Topic[] = [];
+ // // // dmaap has no topics, only show topic in db
+ // // for (var i = 0; i < feederList.length; i++) {
+ // // let data = await this.getTopicDetail(feederList[i]);
+ // // let dbinfo = [];
+ // // var totalCB = 0;
+ // // var totalDRUID = 0;
+ // // var totalES = 0;
+ // // var totalHDFS = 0;
+ // // var totalMONGO = 0;
+ // // for (var x = 0; x < data.enabledSinkdbs.length; x++) {
+ // // let dbdata = await this.getDbDetail(data.enabledSinkdbs[x]);
+ // // dbinfo.push(dbdata);
+ // // if (dbinfo != undefined && dbinfo[x].type == "CB") {
+ // // totalCB = totalCB + 1;
+ // // } if (dbinfo != undefined && dbinfo[x].type == "DRUID") {
+ // // totalDRUID = totalDRUID + 1;
+ // // } if (dbinfo != undefined && dbinfo[x].type == "ES") {
+ // // totalES = totalES + 1;
+ // // } if (dbinfo != undefined && dbinfo[x].type == "HDFS") {
+ // // totalHDFS = totalHDFS + 1;
+ // // } if (dbinfo != undefined && dbinfo[x].type == "MONGO") {
+ // // totalMONGO = totalMONGO + 1;
+ // // }
+ // // }
+ // // let feed = {
+ // // name: data.name,
+ // // login: data.login,
+ // // password: data.password,
+ // // enabledSinkdbs: data.enabledSinkdbs,
+ // // sinkdbs: data.sinkdbs,
+ // // enabled: data.enabled,
+ // // saveRaw: data.saveRaw,
+ // // dataFormat: data.dataFormat,
+ // // ttl: data.ttl,
+ // // correlateClearedMessage: data.correlateClearedMessage,
+ // // messageIdPath: data.messageIdPath,
+ // // kafkas: data.kafkas.length,
+ // // type: data.type,
+ // // CB: totalCB,
+ // // DRUID: totalDRUID,
+ // // ES: totalES,
+ // // HDFS: totalHDFS,
+ // // MONGO: totalMONGO
+ // // };
+ // // t.push(feed);
+ // // }
+ // // return t;
+ // }
+
+ // onActivate(event) {
+ // const emitType = event.type;
+ // if (emitType == "dblclick") {
+ // console.log("Activate Event", event);
+ // let name = event.row.name;
+ // this.openTopicModal(name);
+ // }
+ // }
+
+ // openNewTopicModal() {
+ // const modalRef = this.modalService.open(NewTopicModelComponent, {
+ // size: "lg",
+ // centered: true
+ // });
+ // modalRef.componentInstance.newTopic = this.tempNewTopic;
+ // modalRef.componentInstance.passEntry.subscribe(receivedEntry => {
+ // console.log(receivedEntry, "newtopic receivedEntry");
+ // this.tempNewTopic = receivedEntry;
+ // this.restApiService.addNewTopic(this.tempNewTopic).subscribe(
+ // res => {
+ // this.init();
+ // this.notificationService.success("SUCCESSFULLY_CREARED");
+ // modalRef.close();
+ // this.updateFilter(this.searchText.nativeElement.value);
+ // },
+ // err => {
+ // this.notificationService.error(err);
+ // modalRef.close();
+ // this.updateFilter(this.searchText.nativeElement.value);
+ // }
+ // );
+ // });
+ // }
+
+ // openTopicModal(name: string) {
+ // if (name == "config") {
+ // const modalRef = this.modalService.open(TopicConfigModalComponent, {
+ // windowClass: "dl-md-modal",
+ // centered: true
+ // });
+ // modalRef.componentInstance.title = "Topics Default Configurations";
+ // modalRef.componentInstance.topic = this.topicDefaultConfig;
+ // modalRef.componentInstance.passEntry.subscribe(receivedEntry => {
+ // this.restApiService
+ // .updateTopicDefaultConfig(this.topicDefaultConfig)
+ // .subscribe(
+ // res => {
+ // this.topicDefaultConfig = receivedEntry;
+ // this.topics.forEach(t => {
+ // if (!t.type) {
+ // // Unconfigure topics
+ // t.login = this.topicDefaultConfig.login;
+ // t.password = this.topicDefaultConfig.password;
+ // t.enabledSinkdbs = this.topicDefaultConfig.enabledSinkdbs;
+ // // t.sinkdbs = this.topicDefaultConfig.sinkdbs; //todo
+ // t.enabled = this.topicDefaultConfig.enabled;
+ // t.saveRaw = this.topicDefaultConfig.saveRaw;
+ // t.dataFormat = this.topicDefaultConfig.dataFormat;
+ // t.ttl = this.topicDefaultConfig.ttl;
+ // t.correlateClearedMessage = this.topicDefaultConfig.correlateClearedMessage;
+ // t.messageIdPath = this.topicDefaultConfig.messageIdPath;
+ // }
+ // });
+ // this.notificationService.success("Success updated.");
+ // modalRef.close();
+ // },
+ // err => {
+ // this.notificationService.error(err);
+ // modalRef.close();
+ // }
+ // );
+ // });
+ // } else {
+ // const index = this.temp.findIndex(t => t.name === name);
+ // const modalRef = this.modalService.open(TopicDetailModalComponent, {
+ // size: "lg",
+ // centered: true
+ // });
+ // modalRef.componentInstance.topic = this.temp[index];
+ // modalRef.componentInstance.passEntry.subscribe(receivedEntry => {
+ // this.tempTopicDetail = receivedEntry;
+ // // Configured topic
+ // if (this.tempTopicDetail.type) {
+ // this.restApiService.getTopicsFromFeeder().subscribe(
+ // res => {
+ // if (res.find(name => name === this.tempTopicDetail.name)) {
+ // // Update topic from db
+ // this.restApiService.upadteTopic(this.tempTopicDetail).subscribe(
+ // res => {
+ // this.temp[index] = this.tempTopicDetail;
+ // this.topics = this.temp;
+ // this.notificationService.success("SUCCESSFULLY_UPDATED");
+ // modalRef.close();
+ // this.updateFilter(this.searchText.nativeElement.value);
+ // },
+ // err => {
+ // this.notificationService.error(err);
+ // modalRef.close();
+ // this.updateFilter(this.searchText.nativeElement.value);
+ // }
+ // );
+ // } else {
+ // // Insert topic from db
+ // this.restApiService.addTopic(this.tempTopicDetail).subscribe(
+ // res => {
+ // this.init();
+ // this.notificationService.success("SUCCESSFULLY_CREARED");
+ // modalRef.close();
+ // this.updateFilter(this.searchText.nativeElement.value);
+ // },
+ // err => {
+ // this.notificationService.error(err);
+ // modalRef.close();
+ // this.updateFilter(this.searchText.nativeElement.value);
+ // }
+ // );
+ // }
+ // },
+ // err => {
+ // this.notificationService.error(err);
+ // modalRef.close();
+ // }
+ // );
+ // } else {
+ // // Reset to default and delete topic from db
+ // this.restApiService.deleteTopic(this.tempTopicDetail.name).subscribe(
+ // res => {
+ // this.init();
+ // this.notificationService.success("SUCCESSFULLY_DELETED");
+ // modalRef.close();
+ // this.updateFilter(this.searchText.nativeElement.value);
+ // },
+ // err => {
+ // this.notificationService.error(err);
+ // modalRef.close();
+ // this.updateFilter(this.searchText.nativeElement.value);
+ // }
+ // );
+ // }
+ // });
+ // }
+ // }
+
+ // deleteTopicModal(name: string) {
+ // const index = this.temp.findIndex(t => t.name === name);
+ // const modalRef = this.modalService.open(AlertComponent, {
+ // size: "sm",
+ // centered: true
+ // });
+ // modalRef.componentInstance.message = "ARE_YOU_SURE_DELETE";
+ // console.log(this.temp[index]);
+ // modalRef.componentInstance.passEntry.subscribe(receivedEntry => {
+ // this.restApiService.deleteTopic(this.temp[index].name).subscribe(
+ // res => {
+ // this.init();
+ // this.notificationService.success("SUCCESSFULLY_DELETED");
+ // modalRef.close();
+ // this.updateFilter(this.searchText.nativeElement.value);
+ // },
+ // err => {
+ // this.notificationService.error(err);
+ // modalRef.close();
+ // this.updateFilter(this.searchText.nativeElement.value);
+ // }
+ // );
+ // });
+ // }
+
+ // getTopicDetail(id) {
+ // return this.restApiService.getTopicDetail(id).toPromise();
+ // }
+
+ // getDbDetail(id) {
+ // return this.restApiService.getDbDetail(id).toPromise();
+ // }
+
+ // GroupByDbType = (array, key) => {
+ // return array.reduce((result, currentValue) => {
+ // (result[currentValue.type] = result[currentValue.type] || []).push(
+ // currentValue
+ // );
+ // return result;
+ // }, {});
+ // };
+}
diff --git a/components/datalake-handler/admin/src/src/assets/icons/add.svg b/components/datalake-handler/admin/src/src/assets/icons/add.svg
index d38e3dc1..408748cb 100644
--- a/components/datalake-handler/admin/src/src/assets/icons/add.svg
+++ b/components/datalake-handler/admin/src/src/assets/icons/add.svg
@@ -1,15 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- viewBox="-174 52.4 491.9 491.9" style="enable-background:new -174 52.4 491.9 491.9;" xml:space="preserve">
+ viewBox="-55.1 170.9 500 500" style="enable-background:new -55.1 170.9 500 500;" xml:space="preserve">
<style type="text/css">
.st0{fill:#5DBEBB;}
</style>
<g>
<g>
- <path class="st0" d="M291.2,264H106.2V79.1c0-8.4-11.4-26.7-34.3-26.7S37.6,70.7,37.6,79.1V264h-184.9c-8.4,0-26.7,11.4-26.7,34.3
- c0,22.9,18.3,34.3,26.7,34.3H37.6v184.9c0,8.4,11.4,26.7,34.3,26.7s34.3-18.3,34.3-26.7V332.7h184.9c8.4,0,26.7-11.4,26.7-34.3
- S299.6,264,291.2,264z"/>
+ <path class="st0" d="M414.2,386.6h-185V201.7c0-8.4-11.4-26.7-34.3-26.7s-34.3,18.3-34.3,26.7v184.9H-24.2
+ c-8.4,0-26.7,11.4-26.7,34.3s18.3,34.3,26.7,34.3h184.9v184.9c0,8.4,11.4,26.7,34.3,26.7s34.3-18.3,34.3-26.7V455.3h184.9
+ c8.4,0,26.7-11.4,26.7-34.3S422.6,386.6,414.2,386.6z"/>
</g>
</g>
</svg>
diff --git a/components/datalake-handler/admin/src/src/assets/icons/druid_able.svg b/components/datalake-handler/admin/src/src/assets/icons/druid_able.svg
index bac3794c..3338767f 100755
--- a/components/datalake-handler/admin/src/src/assets/icons/druid_able.svg
+++ b/components/datalake-handler/admin/src/src/assets/icons/druid_able.svg
@@ -1,22 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="圖層_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- viewBox="-403 285.3 34 25" style="enable-background:new -403 285.3 34 25;" xml:space="preserve">
+ viewBox="-275.5 408.9 24.9 25" style="enable-background:new -275.5 408.9 24.9 25;" xml:space="preserve">
<style type="text/css">
.st0{fill:#5DBEBB;}
</style>
<g>
- <path class="st0" d="M-385.5,285.3c2.2,0,4.3,0,6.5,0c4.2,0,8,2.7,9.4,6.6c0.6,1.7,0.8,3.4,0.6,5.2c-0.3,2.6-1,5-2.5,7.2
- c-2.3,3.4-5.5,5.2-9.5,5.8c-1.4,0.2-2.7,0.2-4.1,0.2c-0.6,0-0.9-0.3-0.9-0.7c0-0.5,0.3-0.9,0.8-0.9c0.6,0,1.2,0,1.9,0
- c3.7-0.1,7-1.4,9.6-4.2c1.8-1.9,2.7-4.3,3-6.9c0.2-1.8,0.2-3.6-0.5-5.3c-1.1-2.6-3.1-4.2-5.8-5c-1.1-0.3-2.1-0.3-3.2-0.4
- c-4,0-8.1,0-12.1,0c-0.2,0-0.3,0-0.5,0c-0.4,0-0.7-0.4-0.7-0.8s0.3-0.7,0.6-0.8c0.2,0,0.4,0,0.6,0L-385.5,285.3L-385.5,285.3z"/>
- <path class="st0" d="M-389.7,304.6h-7.2c-0.2,0-0.3,0-0.5,0c-0.4-0.1-0.7-0.3-0.7-0.7c0-0.4,0.2-0.7,0.6-0.9
- c0.2-0.1,0.5-0.1,0.8-0.1c4.7,0,9.5,0,14.2,0c1.7,0,3.1-0.6,4.2-1.8c1-1,1.5-2.3,1.6-3.7c0.1-1.1,0-2.1-0.7-3.1
- c-0.8-1-1.8-1.5-3.1-1.5c-4.5,0-9,0-13.5,0c-0.5,0-1,0-1.4-0.1c-0.4,0-0.6-0.3-0.7-0.7c0-0.5,0.2-0.8,0.6-0.9c0.1,0,0.3,0,0.4,0
- h14.4c2.4,0,4.5,1.5,5.3,3.8c0.5,1.6,0.4,3.3-0.3,4.8c-1.2,3-3.9,4.9-7.2,4.9C-385,304.6-387.3,304.6-389.7,304.6L-389.7,304.6z
- M-400.4,292.6c-0.6,0-1.1,0-1.7,0c-0.5,0-0.8-0.3-0.9-0.7s0.2-0.8,0.7-0.9c0.3,0,0.5-0.1,0.8-0.1c0.8,0,1.5,0,2.3,0
- c0.2,0,0.5,0,0.7,0.1c0.4,0.1,0.6,0.5,0.6,0.9s-0.3,0.7-0.7,0.7C-399.2,292.7-399.8,292.6-400.4,292.6L-400.4,292.6z M-390.3,310.3
- c-0.5,0-1,0-1.6,0c-0.5,0-0.8-0.3-0.9-0.7c0-0.5,0.3-0.9,0.7-0.9c1.1-0.1,2.2-0.1,3.4,0c0.4,0,0.8,0.4,0.7,0.8l0,0
- c0,0.5-0.4,0.7-0.9,0.8L-390.3,310.3L-390.3,310.3z"/>
+ <path class="st0" d="M-262.7,412.2c1.6,0,3.1,0,4.8,0c3.1,0,5.9,2,6.9,4.8c0.4,1.2,0.6,2.5,0.4,3.8c-0.2,1.9-0.7,3.7-1.8,5.3
+ c-1.7,2.5-4,3.8-7,4.2c-1,0.1-2,0.1-3,0.1c-0.4,0-0.7-0.2-0.7-0.5c0-0.4,0.2-0.7,0.6-0.7c0.4,0,0.9,0,1.4,0c2.7-0.1,5.1-1,7-3.1
+ c1.3-1.4,2-3.1,2.2-5c0.1-1.3,0.1-2.6-0.4-3.9c-0.8-1.9-2.3-3.1-4.2-3.7c-0.8-0.2-1.5-0.2-2.3-0.3c-2.9,0-5.9,0-8.9,0
+ c-0.1,0-0.2,0-0.4,0c-0.3,0-0.5-0.3-0.5-0.6s0.2-0.5,0.4-0.6c0.1,0,0.3,0,0.4,0L-262.7,412.2L-262.7,412.2z"/>
+ <path class="st0" d="M-265.7,426.4h-5.3c-0.1,0-0.2,0-0.4,0c-0.3-0.1-0.5-0.2-0.5-0.5s0.1-0.5,0.4-0.7c0.1-0.1,0.4-0.1,0.6-0.1
+ c3.4,0,7,0,10.4,0c1.2,0,2.3-0.4,3.1-1.3c0.7-0.7,1.1-1.7,1.2-2.7c0.1-0.8,0-1.5-0.5-2.3c-0.6-0.7-1.3-1.1-2.3-1.1
+ c-3.3,0-6.6,0-9.9,0c-0.4,0-0.7,0-1-0.1c-0.3,0-0.4-0.2-0.5-0.5c0-0.4,0.1-0.6,0.4-0.7c0.1,0,0.2,0,0.3,0h10.5
+ c1.8,0,3.3,1.1,3.9,2.8c0.4,1.2,0.3,2.4-0.2,3.5c-0.9,2.2-2.9,3.6-5.3,3.6C-262.3,426.4-264,426.4-265.7,426.4L-265.7,426.4z
+ M-273.6,417.6c-0.4,0-0.8,0-1.2,0c-0.4,0-0.6-0.2-0.7-0.5c-0.1-0.3,0.1-0.6,0.5-0.7c0.2,0,0.4-0.1,0.6-0.1c0.6,0,1.1,0,1.7,0
+ c0.1,0,0.4,0,0.5,0.1c0.3,0.1,0.4,0.4,0.4,0.7c0,0.3-0.2,0.5-0.5,0.5C-272.7,417.7-273.1,417.6-273.6,417.6L-273.6,417.6z
+ M-266.2,430.5c-0.4,0-0.7,0-1.2,0c-0.4,0-0.6-0.2-0.7-0.5c0-0.4,0.2-0.7,0.5-0.7c0.8-0.1,1.6-0.1,2.5,0c0.3,0,0.6,0.3,0.5,0.6l0,0
+ c0,0.4-0.3,0.5-0.7,0.6L-266.2,430.5L-266.2,430.5z"/>
</g>
</svg>
diff --git a/components/datalake-handler/admin/src/src/assets/icons/druid_disable.svg b/components/datalake-handler/admin/src/src/assets/icons/druid_disable.svg
index 667d52cb..4387037f 100755
--- a/components/datalake-handler/admin/src/src/assets/icons/druid_disable.svg
+++ b/components/datalake-handler/admin/src/src/assets/icons/druid_disable.svg
@@ -1,22 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="圖層_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- viewBox="-403 285.3 34 25" style="enable-background:new -403 285.3 34 25;" xml:space="preserve">
+ viewBox="-275.5 408.9 24.9 25" style="enable-background:new -275.5 408.9 24.9 25;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D2D3D5;}
</style>
<g>
- <path class="st0" d="M-385.5,285.3c2.2,0,4.3,0,6.5,0c4.2,0,8,2.7,9.4,6.6c0.6,1.7,0.8,3.4,0.6,5.2c-0.3,2.6-1,5-2.5,7.2
- c-2.3,3.4-5.5,5.2-9.5,5.8c-1.4,0.2-2.7,0.2-4.1,0.2c-0.6,0-0.9-0.3-0.9-0.7c0-0.5,0.3-0.9,0.8-0.9c0.6,0,1.2,0,1.9,0
- c3.7-0.1,7-1.4,9.6-4.2c1.8-1.9,2.7-4.3,3-6.9c0.2-1.8,0.2-3.6-0.5-5.3c-1.1-2.6-3.1-4.2-5.8-5c-1.1-0.3-2.1-0.3-3.2-0.4
- c-4,0-8.1,0-12.1,0c-0.2,0-0.3,0-0.5,0c-0.4,0-0.7-0.4-0.7-0.8s0.3-0.7,0.6-0.8c0.2,0,0.4,0,0.6,0L-385.5,285.3L-385.5,285.3z"/>
- <path class="st0" d="M-389.7,304.6h-7.2c-0.2,0-0.3,0-0.5,0c-0.4-0.1-0.7-0.3-0.7-0.7c0-0.4,0.2-0.7,0.6-0.9
- c0.2-0.1,0.5-0.1,0.8-0.1c4.7,0,9.5,0,14.2,0c1.7,0,3.1-0.6,4.2-1.8c1-1,1.5-2.3,1.6-3.7c0.1-1.1,0-2.1-0.7-3.1
- c-0.8-1-1.8-1.5-3.1-1.5c-4.5,0-9,0-13.5,0c-0.5,0-1,0-1.4-0.1c-0.4,0-0.6-0.3-0.7-0.7c0-0.5,0.2-0.8,0.6-0.9c0.1,0,0.3,0,0.4,0
- h14.4c2.4,0,4.5,1.5,5.3,3.8c0.5,1.6,0.4,3.3-0.3,4.8c-1.2,3-3.9,4.9-7.2,4.9C-385,304.6-387.3,304.6-389.7,304.6L-389.7,304.6z
- M-400.4,292.6c-0.6,0-1.1,0-1.7,0c-0.5,0-0.8-0.3-0.9-0.7s0.2-0.8,0.7-0.9c0.3,0,0.5-0.1,0.8-0.1c0.8,0,1.5,0,2.3,0
- c0.2,0,0.5,0,0.7,0.1c0.4,0.1,0.6,0.5,0.6,0.9s-0.3,0.7-0.7,0.7C-399.2,292.7-399.8,292.6-400.4,292.6L-400.4,292.6z M-390.3,310.3
- c-0.5,0-1,0-1.6,0c-0.5,0-0.8-0.3-0.9-0.7c0-0.5,0.3-0.9,0.7-0.9c1.1-0.1,2.2-0.1,3.4,0c0.4,0,0.8,0.4,0.7,0.8l0,0
- c0,0.5-0.4,0.7-0.9,0.8L-390.3,310.3L-390.3,310.3z"/>
+ <path class="st0" d="M-262.7,412.2c1.6,0,3.1,0,4.8,0c3.1,0,5.9,2,6.9,4.8c0.4,1.2,0.6,2.5,0.4,3.8c-0.2,1.9-0.7,3.7-1.8,5.3
+ c-1.7,2.5-4,3.8-7,4.2c-1,0.1-2,0.1-3,0.1c-0.4,0-0.7-0.2-0.7-0.5c0-0.4,0.2-0.7,0.6-0.7c0.4,0,0.9,0,1.4,0c2.7-0.1,5.1-1,7-3.1
+ c1.3-1.4,2-3.1,2.2-5c0.1-1.3,0.1-2.6-0.4-3.9c-0.8-1.9-2.3-3.1-4.2-3.7c-0.8-0.2-1.5-0.2-2.3-0.3c-2.9,0-5.9,0-8.9,0
+ c-0.1,0-0.2,0-0.4,0c-0.3,0-0.5-0.3-0.5-0.6s0.2-0.5,0.4-0.6c0.1,0,0.3,0,0.4,0L-262.7,412.2L-262.7,412.2z"/>
+ <path class="st0" d="M-265.7,426.4h-5.3c-0.1,0-0.2,0-0.4,0c-0.3-0.1-0.5-0.2-0.5-0.5s0.1-0.5,0.4-0.7c0.1-0.1,0.4-0.1,0.6-0.1
+ c3.4,0,7,0,10.4,0c1.2,0,2.3-0.4,3.1-1.3c0.7-0.7,1.1-1.7,1.2-2.7c0.1-0.8,0-1.5-0.5-2.3c-0.6-0.7-1.3-1.1-2.3-1.1
+ c-3.3,0-6.6,0-9.9,0c-0.4,0-0.7,0-1-0.1c-0.3,0-0.4-0.2-0.5-0.5c0-0.4,0.1-0.6,0.4-0.7c0.1,0,0.2,0,0.3,0h10.5
+ c1.8,0,3.3,1.1,3.9,2.8c0.4,1.2,0.3,2.4-0.2,3.5c-0.9,2.2-2.9,3.6-5.3,3.6C-262.3,426.4-264,426.4-265.7,426.4L-265.7,426.4z
+ M-273.6,417.6c-0.4,0-0.8,0-1.2,0c-0.4,0-0.6-0.2-0.7-0.5c-0.1-0.3,0.1-0.6,0.5-0.7c0.2,0,0.4-0.1,0.6-0.1c0.6,0,1.1,0,1.7,0
+ c0.1,0,0.4,0,0.5,0.1c0.3,0.1,0.4,0.4,0.4,0.7c0,0.3-0.2,0.5-0.5,0.5C-272.7,417.7-273.1,417.6-273.6,417.6L-273.6,417.6z
+ M-266.2,430.5c-0.4,0-0.7,0-1.2,0c-0.4,0-0.6-0.2-0.7-0.5c0-0.4,0.2-0.7,0.5-0.7c0.8-0.1,1.6-0.1,2.5,0c0.3,0,0.6,0.3,0.5,0.6l0,0
+ c0,0.4-0.3,0.5-0.7,0.6L-266.2,430.5L-266.2,430.5z"/>
</g>
</svg>
diff --git a/components/datalake-handler/admin/src/src/assets/icons/hadoop_able.svg b/components/datalake-handler/admin/src/src/assets/icons/hadoop_able.svg
index e48a60f1..1754666d 100755
--- a/components/datalake-handler/admin/src/src/assets/icons/hadoop_able.svg
+++ b/components/datalake-handler/admin/src/src/assets/icons/hadoop_able.svg
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="圖層_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- viewBox="290 -397 2500 1875" style="enable-background:new 290 -397 2500 1875;" xml:space="preserve">
+ viewBox="2189.5 407.9 24.9 24.9" style="enable-background:new 2189.5 407.9 24.9 24.9;" xml:space="preserve">
<style type="text/css">
.st0{fill:#5DBEBB;}
.st1{fill:#AEDEDD;}
@@ -9,140 +9,115 @@
.st3{fill:#4A9895;}
</style>
<g>
- <path class="st0" d="M1212.6,19L1047,45.9l-151.1,66.2l-128.3,80.7l-122.1,149l-69,73.1l-66.7,24.6l-17.6-43.1l30.8-44.5l6.9-62.8
- l20.7,0.8l22.6,20.6l-6.1-64l-25-16.8l0.8-24.4l-59.3,33.5l-53.7,63.3l-11.3,56.7l23,45.3l21.4,77l43.5,20.6l45.8-2.2l43.4-25.2
- l-29,146.9l29,163.5l-31.9,75.5L459.4,972.8L478,1040l49.5,77.9l93.3,65.7l49.5,6.8l55,1.9L691,1333.2l126.2,51.7l157.3,20.7
- l53.8-35.2l4.1-95.2l60-99.3l4.1-78.6l144.9,10.4l134.5-12.4l-134.5,80.7l22.8,97.3l84.8,132.5l82.8,35.2l66.2-26.9l26.9-53.8
- l138.7-105.5l26.9,22.8l217.3,8.3l43.5-35.2l4.1-62.1l-14.5-26.9l-10.4-167.6l-72.4-144.9l12.4-64.2l43.5,22.8l122.1,113.8l60,4.2
- l66.2-26.9l66.2-49.7l33.1-107.6l194.6,12.4l118-45.5l95.2-89l68.3-128.3l16.5-151.1l-14.5-175.9l-37-157.6l-37.3-49.7l-51.7-16.6
- l-91.1,99.4l-82.8,29l-72.4-120l-72.4-66.2l-39.3-24.8l-157.3-130.4L1972.2-341L1846-351.3l-146.9,24.8l-128.5,47.4l-89,72.4
- l-70.4,84.9l-72.4,20.7L1212.6,19"/>
- <path class="st1" d="M732.3,392.5c-141.8,165.4-110.3,366-71,562.6c-21-53-42-106-62.9-159l-23.2-145.8
- c2.2-49.7,4.4-99.4,6.6-149.1l59.6-142.4l89.4-132.5l139.1-115.9l152.4-62.9l178.9-23.2l-165.6,188.8
- C902.6,256.2,824.2,285.3,732.3,392.5"/>
- <path class="st1" d="M1400-111.5c-98.6,96.2-152.4,168.8-215.2,281.4c-44.9,80.6-95.2,158.2-142.4,237.6
- c-23.9,40.2-26.1,73.9-33.3,120.3L939.6,445c11.1-33.1,22.1-66.2,33.1-99.4l112.6-202.1l238.5-235.2
- C1349.2-98.3,1374.6-104.9,1400-111.5 M1886.9-350c-79,29.6-210.1,39.4-219.2,130c-6.5,64.4,4.9,96.7,43.7,164.8
- c-95.8-99.2-119.5-83.8-304.7-53l79.5-112.6l139.1-86.1l178.9-39.7L1886.9-350"/>
- <path class="st2" d="M2104.8,876c26.3,16.2,25.7,28,21.3,39.1c20.7-8.3,41.5-16.6,62.2-24.9l40.3-54.1l30-77.1l-38.2-28.7
- l-167.1,21.3c-4.1,11.2-8.3,22.5-12.4,33.8c1.2,16,2.4,32,3.6,48c5.3,9.5,10.7,19,16,28.4c8.3,4.1,16.6,8.3,24.9,12.4
- C2091.8,874.8,2098.3,875.4,2104.8,876 M2089.3,590.3c-83.8,24.2-83.1,30.8-107.8,113.9C2014.1,651.8,2038.3,625.4,2089.3,590.3
- M2646.1-31.5c-14.9,6.9-29.4,10.2-38.7,23.8c-20,29.3-37.2,54-70.3,74.6c-16.7,10.4-33.9,17.1-51.6,22.6
- c-14.7,4.6-23.5,0.5-36,9.5c7.4,1.3,14.8,2.6,22.2,3.9h49l60.4-37.3l35.5-37.3L2646.1-31.5 M1312,154.3
- c-32.9,90.2-61.7,167.5-111.6,249.1c63.9-68.9,102.7-127.5,139.4-205.4c14.2-30.3,16.9-65.8,56.6-52.6c1.8,30.2,8.2,60.4,9.9,90.6
- c21.4-153.5,81.8-217.7,222.2-277.3L1509.4-27l-112,24.9l-55.1,80L1312,154.3 M1584,150.8c30.3,142.5,73.9,279.2,92.8,424
- c12.3,94.1,13.6,139.2-33.7,220.4c-51.7-3.3-83.8,2.5-133.9,18.9c-199.2,65.3-313.4,161.3-447.6-32.1l128.5,60.6
- c30.5-6,61.1-12,91.6-18c53.9-31.4,107.8-62.8,161.8-94.2l126.2-24.9l40.9-170.6L1580.5,309c-1.2-35.5-2.4-71.1-3.6-106.6
- C1579.3,185.2,1581.7,168,1584,150.8 M1927.1,1032.4c-16.7,115.8,38.5,178,15.6,210c-6.5,9-15.3,24.8-25,29.2
- c-35,15.5-83.1-2.9-86.6,6.2h-115.5l-46.2-19.6l71.1-83.5c23.1-50.4,46.2-100.7,69.3-151.1l44.4-152.9h23.1L1927.1,1032.4"/>
- <path class="st2" d="M1732.9,695.9c9.4,52.6,25.7,65,50.4,115.9c-16.5,83-42.9,181.7-74.7,255c-13.4,30.9-24.2,47.9-47.9,71.8
- c-39.9,40.3-80.3,75.4-125.6,110.4c-32.6,25.1-55.4,12.5-95.6,6.8c-17.1,31-21.8,48.2-53.3,64c-48.4,24.2-91.7-28-129.8-58.7
- c27.4,42.9,54.9,85.7,82.3,128.6c19,17.8,37.9,35.5,56.9,53.3l48,7.1l64-39.1c11.3-21.3,22.5-42.7,33.8-64
- c23.7-17.8,47.4-35.5,71.1-53.3c29-24.9,58.1-49.8,87.1-74.6l55.1-78.2l49.8-92.4c21.3-64,42.7-128,64-192
- c1.8-24.3,3.5-48.6,5.3-72.9c-26.7-11.8-53.3-23.7-80-35.5C1774.2,729.7,1752.4,714.3,1732.9,695.9 M1095.2,1066.2
- c89.7,0,184.5-5,266.6-42.7c23.2-34.9,46.2-63.4,74.6-94.2c-25.9,48.9-34,76.5-40.9,131.5l-26.7,39.1
- c-67.5,1.8-135.1,3.5-202.6,5.3c-21.9-2.4-43.8-4.7-65.8-7.1c-2.4-2.4-4.7-4.8-7.1-7.1C1094,1082.8,1094.6,1074.5,1095.2,1066.2
- M1082.8,1004l-7-63.1c-15.3,92.3-11.6,154.1-54.1,236.7c-31.7,36.7-70.8,70.2-115.5,88.1c3.8,22.7,4.9,36.8,2.7,53.4
- c-7.9,59.8-127.4,33.4-176.6,31L969,1411l53.3-21.3c5.9-34.4,11.9-68.7,17.8-103.1l49.8-92.4l8.9-56.9L1082.8,1004 M949.4,483.2
- c-2.5,44.9-5.4,63.6,14.4,103.2c25.1,50.4,56,97.7,83.3,147.4l8.9-99.5C1020.6,583.9,985,533.5,949.4,483.2 M584.6,822
- c-7.7,16.4-15.4,32.8-23.1,49.1c21.2,71.3,40,116.5,80.3,178.8c-7,25.2-12.3,36.3-28.4,56.9c-35.5-5.4-67-7-103-6.9
- c39.7,30.8,79.4,61.6,119.1,92.4c19.6-3.6,39.1-7.1,58.7-10.7l58.7-58.7l-83.5-129.8C637,936.2,610.8,879.1,584.6,822 M2646.4-55.1
- c24.2,108.8,55.4,209.1,52.5,320.5c-3.6,136.7-30.2,309.3-156.8,391.7c-141.8,92.3-308.3,48.6-463.9,9.1l190.2,78.2
- c59.2,3,118.5,5.9,177.8,8.9c40.3-11.8,80.6-23.7,120.9-35.5c31.4-26.1,62.8-52.1,94.2-78.2l71.1-149.3l26.7-172.4
- c-7.1-56.3-14.2-112.6-21.3-168.9l-39.1-167.1C2681.1-30.4,2663.8-42.8,2646.4-55.1 M530,269.1c-64.4,41.9-89.7,60.3-82.6,138
- l19.2,69.8l27.3,18.5l33.7,11.2l61-14.4c10.4-32.4,20.9-64.7,31.3-97.1l-86.6,42.5h-20c-7.5-11.5-15-23-22.5-34.5l27.3-40.1
- l14.4-76.2c6.2,1.9,12.3,3.8,18.4,5.6c7.5,5.9,15,11.8,22.5,17.6l-3.2-40.1L555,244.2c-5.1-4.3-10.2-8.6-15.2-12.8L530,269.1
- M1974.4-342.9c57.1,53.1,127.3,99.2,173,164c17.7,25.1,37.3,37.9-0.3,73.4c39.8-11.4,54.5-10.1,86.4-6.3
- c57.9,7,112.2,89.3,115.6,148.3c-0.7,5.5-16.1,18-60.9,30.4c-0.9,1.7-25.3-3.3-24.7-1.7c4.7,12.7,10.9,14.7,20.4,20.6
- c2.1,14.2,3.4,36,13,51.5c28.2-0.5,55.7,2.6,83.3,8c9.3,15.4,7.9,30.8,7.1,46.2l32-5.3c-2.9-24.3-5.9-48.6-8.9-72.9
- c9.5-16,18.9-32,28.4-48L2398.1-27c-26.1-24.9-52.1-49.8-78.2-74.7l-7.5-0.4c-29.3-18-58.6-36-88-54l-143.5-117.4L1974.4-342.9
- M2070.7,95.1c-3,5.3-7.6,13.7-13.4,19.5c23.8,22.5,35.5,37.6,44,69.4c-26.9,13.3-53.8,26.7-80.7,40.1l-68.3,65.5
- c-30-16.1-37.4-28.5-51.9-59.3c-16.9,4.5-32.9,8.8-46.8,3.7c8.8,0.1,14.3-2.1,23.1-7.6l43.5-45.1c25.6-19.4,51.2-38.8,76.8-58.1
- l50.2-16.4C2053.5,104.1,2064.3,97.7,2070.7,95.1"/>
- <path class="st2" d="M2145,175.3c-85.6,46.1-167.6,92.4-211.3,180C1933.6,244.2,2045.2,195.3,2145,175.3 M1916.6-43.2
- c-63.6,43.3-108.5,130.8-102.9,216C1793,99,1800.3,29.3,1863.9-21.7c10.7-5.2,21.5-10.4,32.2-15.6
- C1903-39.3,1909.8-41.2,1916.6-43.2"/>
- <path class="st3" d="M2772,158c-11.5-72.7-30.6-143.2-57.2-194c-3.2-6.2-8.1-12.5-14.2-18.5c-13.2-13-32.7-25.3-52.8-32.2
- c-21.3-7.3-43.9-8.8-61.7,0.5c-4.6,2.4-9,5.6-12.8,9.5c-11.6,11.7-21.3,26-31.1,40.2c-10.9,15.9-21.8,31.9-34.9,43
- c-15.2,13-34.1,20.8-52,28c-7.5-18.3-16.6-35.9-27.1-52.6c-12.2-19.5-26.2-37.8-41.5-56.1c-11.2-13.5-23.9-25.6-37.9-36.2
- c-13.2-10.1-26.8-18.6-42.5-28.4c-42.3-26.5-78.2-58-114.9-90.2c-16.7-14.6-33.5-29.4-50-43c-87.4-72.1-168.9-107-256.1-112.5
- c-86.6-5.4-178,18.3-286,63.8c-52.1,21.9-90.8,47.8-124.5,79c-32.2,29.8-59.5,64.1-89.6,104.1c-17.5,1.2-33,3.8-48.8,10.2
- c-17.4,7-35,18.3-56,36.8c-14.6,12.9-29,26.1-43,39.7c-12.8,12.5-25.5,25.1-37.8,38.1c-98.3,15.8-178.4,33.2-250.1,61
- c-73.3,28.4-138,67.5-204.4,126.4c-26.1,23.1-50,48.7-71.2,76.4c-20.2,26.5-37.5,54.3-52.6,83.6c-13.3,14.7-26.6,29.5-41,42.5
- c-14,12.6-29,23.3-45.8,29.8l0,0c-9.8,3.8-13.8,6-14.2,5.8c-0.5-0.3-0.8-1.7-1.4-4.4c24.1-23,27.9-56.8,30.1-90.3
- c2.9,3.5,5.7,7.7,8.5,12.2c3.2,4.9,6.4,10,10.4,14.9l16.4,20.6L590,340c4.8-21.6,8.4-50.3,2.8-75.2c-3.6-16.2-11.1-30.6-24.2-40.8
- c1.2-3.3,2.4-6.3,3.6-9.2c4.1-10.5,8.3-21.3,11.9-31.4l7.1-20.2l-21.1,3.7c-28.1,4.9-88.4,38-130.9,82.1
- c-15.8,16.4-29.3,34.5-38.2,53.5c-9.3,19.8-13.4,40.4-9.8,61.1c3.1,18.1,12.2,35.8,28.6,52.6c3,12.1,5.8,22.6,8.7,32
- c3.4,10.8,7,20.4,11.6,29.8c12.4,25.7,32.1,41.4,54.9,48.7c18.3,5.9,38.6,6.2,58.5,1.8c-4,23.7-6.5,47.6-7.3,71.6
- c-1.3,33.5,0,70.6,3.7,113.6c0.8,9.4,2,19.8,3.6,31.1c1.4,9.6,3,19.1,4.7,28.5c-3.7,10.1-7.5,20.3-11.2,30.4l-17.4,47.2l-38.2,37.8
- c-11.9,11.7-23.8,23.5-35.6,35.3c-1,1-5,4.8-8.6,8.3c-24.1,23.2-28.8,27.8-22,68.5c4.4,26.1,12.9,51.3,25.2,74.7
- c11.8,22.5,27.7,44.4,48,64.8c25.4,25.4,67,57.1,110.6,73.6c24.9,9.5,50.6,14.1,74.7,10.2c-1.2,3.7-2.4,7.4-3.8,11.1
- c-3.8,10.6-8,21-12.7,31.2c-29.6,64.8,0.8,98.6,48,120.2c23.6,10.7,51.6,18,77.7,24.8c5.3,1.4,10.7,2.8,17.4,4.6
- c30.9,8.3,84.2,23.7,132.9,26.7c53.2,3.4,101.1-7.6,114-55.3c5.1-18.9,8-33.4,9.2-47.6c1.1-13.2,0.7-26.5-0.9-42.9
- c15.2-33.6,21.6-43,32.7-59.2c2.2-3.2,4.8-7,5.6-8.2c11.9-17.6,17.5-30.1,19.5-44.2c2-13.6,0.3-27.1-2.2-47.8
- c-0.2-2-0.6-4.8-1.1-8.6c30.6,4,61.4,6.1,92.3,6.3c15.5,0.1,31-0.4,46.4-1.2c-4,2-7.8,4-12.1,6.2l-5.8,3
- c-41.1,21.1-42.8,61.1-29.9,102.2c11.6,37.1,35.4,75,50.4,98c31.4,48.5,61.5,89.5,97.8,111.8c38.1,23.4,81.7,26.1,137.9-4.3
- c28.6-15.5,37.6-31.3,49.8-52.6c3.7-6.5,7.8-13.6,12.4-20.6c11.8-7.8,41.2-32.1,70.1-56c9.8-8.1,19.7-16.2,30.7-25.2
- c7.6,5.6,16.9,9.5,28,12.2c14.5,3.5,31.7,5,52.4,6.5c15.5,1.1,65.9,1.1,98.4,1.1c10.1,0,18.4,0,23.4,0c33.6,0.2,60.8-1.6,81.3-13.2
- c21.9-12.4,34.8-34.3,37.6-73.7c1.2-17.5,1.5-28.3-1-39.3c-2.3-10.3-6.7-19.7-14.3-33.3c-0.5-17-0.9-34-1.4-51
- c-0.5-18-1-36.1-1.4-54.1c-0.6-21.3-2.9-38.6-7.2-55.6c-4.3-16.9-10.4-33.1-18.6-52.6c-5.1-12.3-9.9-24.7-14.4-37.2l-11.8,4.3
- l1.8-0.7l10-3.7l0,0c-7-19-14-37.4-23.7-57.2c0.6-3.8,1.3-7.9,1.9-12.3l18.7,18.1l27.6,26.6c21.1,20.3,40.3,38.8,63,52.1
- c23.4,13.8,49.7,21.8,83.8,20.2c35.7-1.7,73.9-16.7,105.3-39.9c30.4-22.5,54.8-52.7,65-86.2l8.8-29.1l7.1-23.2
- c50,8.5,103.7,11.2,155.6,5.8c50.1-5.3,98.4-18,140.1-40.3c61.3-32.7,107.3-80.9,140.3-138.1l0,0c36.9-63.9,57.6-139.3,65.4-216.8
- C2788.4,324.1,2784.9,239.5,2772,158L2772,158z M2123.7,680.7c-28.8-9.7-48.9-23.9-74.2-39.8c6.9,31.1,10,64,0.8,95
- c-14.6,49.2-38.1,129.8,28.7,144.6c25.4,5.6,37,4.8,72.9-13.7c-29.1,6.6-43.7,5-63.7,1.3c-18.1-3.3-27.7-14.8-32.8-28.4
- c6.3,4.6,16.6,7,34.3,11.3c49.6,12,96.8-11.9,106-46.3c5.4-20.1,4.5-30.6,15.9-58c10.3,3.2,20.8,6.1,31.7,8.7l-18.4,60
- c-15.9,52-78,93.8-132.8,92.9c-50.6-0.9-82.8-32.6-117.7-63.7c-24.1-21.4-47.3-41.9-70.2-62.3c-63-19.9-113.6-43.1-172.1-86.4
- c41.6,48.9,69.9,76,127.9,100.4c-8.4,86.1-38.4,148.9-63.9,231.4c-11.6,37.3-102.7,186.6-128,201.2c-18,10.4-130.9,105.4-152.1,118
- c-15.8,21-29.7,50-53.5,62.6c-72.4,38.3-119-35-158-97c-17.7-28.2-67-109.5-24.1-132.3c40.6-21.5,63.4-36.9,104.8-64.1
- c6.1,11.1,16.5,21.8,23.3,32.9l-4.5-36.4c-2.7-22-2.6-39.8-0.9-61.9c1.7-21.4,3.4-42.8,5.1-64.2c-6.2,21.8-18.7,43.5-24.9,65.3
- c-2.5,8.7-4.6,15.7-5.7,22.3c-93,19-185.3,20.2-278.4,3.6c-5.9-34.4-13.2-70.3-19.2-96.1c-1.8,28.8-0.7,108.5-0.8,153.1
- c-0.1,34.6-1.6,46.4-19.4,75.8c-16.7,27.5-23.7,33.8-47.1,80.3c2,29.3,2,48.7-5.8,76.6c-13,46.3-143.8,10.4-178.2,1
- c-42.5-11.6-130.3-28.9-108.2-85.5c19.4-49.8,31.8-102.4,41.3-172.1C684,998.7,611.6,845,597.7,708.8
- c-10.8-105.7-4.3-170.8,18.6-235.4c36.2-102.5,87-191.2,168.3-262.6c109.8-96.3,212.4-135,373-159.5c-38.6,43.3-76.9,89-118.5,138
- c-42.2,49.6-67.2,99.8-94,154.1c-37,75-36.2,103.5,12.8,169.4c42.3,56.7,65.1,82.3,83.5,137.8c-15.2,31.4-20.8,58-25.9,100.8
- c51.7,56.6,90.2,95.3,140.4,107.3c49.3,11.7,90.4,9.5,134.5-13.1c97.9-50.1,188.5-114.7,299-117.4
- c51.1-125.6,45.9-230.6,21.4-352.2c-16.8-83-23.5-161.6-28.7-246.2c-20.7,87.2-24.6,163.8-9.2,250.6
- c18.5,104.6,32.9,220.2-18.6,312.2c-99.9,7.6-185.5,68.4-275.5,115c-36.2,18.8-73.9,20.6-113.9,9.6c-37.2-10.2-62.3-34.8-102.3-81
- c-0.6-46.4,9.8-67.8,31.1-109.8c34.2-67.5,72-130.2,113.4-196.6c-50.7,61.3-98.8,112.4-138.8,174c-15.3-43.5-37.1-65.6-73.3-114.6
- c-35.3-47.8-39-68.8-12.6-124.2c26.6-55.6,49.1-104.5,94.3-153.3c78.1-84.3,149.6-178.2,235.1-261.3
- c46.4-45.1,65.2-43.5,126.7-52.9c55.6-8.4,109.9-19.1,166.6-32.2c-54.8,5.1-107.8,7-161.2,8.3h-1.7c52.5-67.1,83-104.5,168.3-141.5
- c210-91.2,343.5-101.1,508.5,37.6c42.8,36,80.1,70.8,123.5,101.9c-15.7,1.3-29.3,4.2-47.2,11.2c21.8-4.2,47,0,69.6,4.1
- c6.3,4.1,12.9,8.1,19.6,12.1c30.6,18,48,28,68.7,56.8c21.9,30.5,40.1,60.9,56.2,94.5c-10.5-3.8-19.4-6.9-27.2-9.3
- c-17.8-8.2-38.6-6.9-55.2,3.4l-1.3,0.6c-16.9,8.3-43.2,17.6-60.7,20.5c9,3.1,28.8,4.2,38.1,0.5c1.2-0.5,2.5-0.9,3.8-1.2
- c-4.3,7.4-7,15.6-7.8,24.1c-1.1,11.2,1.1,22.5,6.3,32.6v0.1c1.6,3.7,3.8,7.2,6.2,9.6c-8,3-16.2,6.3-24.7,10c39.2-6,74.4-7,112.6-2
- c2.5,12,5.1,24.8,7.4,37.8l-14.2,1.1c-0.4,0-0.8,0.1-1.1,0.1c-18.1-14.4-38.2-12-65.7-5.7c-83.7,19.1-64,66-102.5,136.8
- c40-48.8,37-100,102.1-115.4c15.2-3.6,25.5-8.1,35.8-6.5c-18.5,9.3-34.5,24.7-40.8,42.6c-17.9,50.5-6.8,93-26.4,140.2
- c24.3-42.1,25.8-83.3,47.5-127.6c7.8-15.9,36.8-41.4,54.6-41.8l14.6-0.3c4.3,28,6.9,55.9,5.2,79c-3,42.2-14,104.8-20.5,128.7
- c22-28.3,32.1-88.3,41.7-130.6c10.1-44,7.5-96.7-1.3-144c-12.1-64.8,54.6-54.3,93.4-84.8c28.5-22.5,48.1-58.3,74.2-83.7
- c25.9-25.2,66.7,11.8,76.9,36.4c44.2,106.9,64.3,275.1,52.6,382.8c-13.1,120.9-71.5,252.9-178.2,312.5
- C2419.1,772.5,2258.8,726.2,2123.7,680.7L2123.7,680.7z M1930.5,1217.7c-4.4,49.9-21.1,53.2-64.9,52.4
- c-19.9-0.4-99.2-0.7-119.3-2.4c-28.4-2.5-44.4-5-53.1-11.5c44.6-32.8,120.5-168.1,135.3-214.7c15.6-49.2,32.8-92.2,45.5-137.7
- c5.9,19,10.5,37.9,19,58c14.2,33.7,21.2,54.6,22.2,90.8l3.2,114.6C1930.7,1188.7,1932.7,1193.3,1930.5,1217.7L1930.5,1217.7z
- M586.8,839.8c28.3,98.1,76.7,194.5,130.2,275.5v1.4c-3.4,13.9-7.2,27.5-15.4,38.4c-38.3,51.2-135.6-24-163.8-52.7
- c-30.8-31.5-51.4-68.7-56.3-103.6c-3.6-25.5-0.1-26.1,17.7-44.1l71.9-72.8L586.8,839.8L586.8,839.8z M532.7,223
- c-7.3,15.6-12.4,27.4-15.9,39.6c-15.3,52.7,6.9,99.8-41,138c22.5,45.4,21.5,63.5,73.8,42.5c20.2-8.1,36.8-19.4,51.7-32.9
- c-7.2,18.7-13.8,37.6-19.8,56.7c-1,3.2-2,6.5-3,9.7c-37.4,15.9-86.6,26-105.4-13.3c-9.1-19.1-14.3-37.8-21-61.9
- C390.4,337.5,482.5,253.2,532.7,223L532.7,223z M562.9,290.6c-7.6-7.6-13.7-12.8-23.5-11.7c0.8-6.4,1.9-12.7,3.5-18.5
- c0.8-3,1.6-6,2.5-8.9C558.2,258.9,561.5,272.4,562.9,290.6L562.9,290.6z M2410.4,52.2c2.3,4.9,4.6,9.9,6.9,14.9
- c-1.9,1.4-3.6,2.8-5.3,4.3c-3-7.1-7.4-13.5-12.9-18.9C2402.7,52.4,2406.5,52.2,2410.4,52.2L2410.4,52.2z M631.6,341.9L631.6,341.9
- L631.6,341.9L631.6,341.9z M1105.2,1114.4L1105.2,1114.4L1105.2,1114.4z M1660.6,1280.2L1660.6,1280.2L1660.6,1280.2z
- M1886.2,851.2L1886.2,851.2L1886.2,851.2L1886.2,851.2z M539,418.6L539,418.6l-0.4-1.1L539,418.6L539,418.6z M2705.6,596.7
- l0.3,0.2L2705.6,596.7z M321.6,403.3c9.8-111,31.4-158.9,110.3-242.5C332.9,230.5,308.3,262.2,321.6,403.3"/>
- <path class="st3" d="M296.1,312.6c10.9-50,21-68.8,51.9-109.8C298,237.7,291.5,252,296.1,312.6 M1456.7-383.9
- c-59.3,14.3-70.6,25.2-88.3,83.3C1396.8-343.1,1413.1-356.9,1456.7-383.9"/>
- <path class="st3" d="M1550.2-392.3c-117.5,28.8-152.1,49.3-191.1,185.5C1408.7-306.6,1446.3-343.3,1550.2-392.3 M1803.4,104.3
- c12.5-55.5,34.8-109,121-150.4C1810.1-17.5,1788.7,30.5,1803.4,104.3 M2530.4,108.1c67.7-24.1,100.3-78.5,116.5-142.5
- c-26.5,53.6-67.4,98.5-122.9,126c-29.8,14.7-48.8,9.6-82.1,6.4C2475.7,107.8,2497.2,120,2530.4,108.1 M2069.4,162.5
- c-8.7-18.2-24.2-32.3-43.1-39.2c16.6-8.9,32.9-18.2,45.6-29.7c-37.3,17.2-80.6,13-112.6,34.6c-28.2,19-67,79.3-95.6,104.9
- c20.7-8,40.7-22,59.1-36.6c0.2,28.4,16.1,54.3,41.2,67.4c-10.6,13.9-19,29.2-25,45.6c54.5-64.6,133.5-113.3,207.8-134.2
- c-20.8-0.3-45.3,3.6-70.4,11.8C2075.5,178.6,2073.1,170.3,2069.4,162.5 M1991,650.4c-2.6,16.7-6.3,37.5-8.9,54.2
- c7.1-18.9,15.6-40.9,23.8-59c8.7-19.1,13.6-20.9,32.2-31c13.1-7.1,37-17,50.1-24.1c-13.5,2.3-37.7,7.2-51.2,9.5
- C2000.9,606.2,1996.6,614.9,1991,650.4 M1374.5,4.9c-41.9,41.4-82.6,183.5-95.6,240.4c20.5-47.2,71.7-179.3,111-212.9
- c10.9-9.3,18.4-15,26.6-19.1c-28.1,47.2-26.1,58.9-16.2,122.2c8.4-64.3,30.6-89.1,67.1-137.1c40-10,77.4-22.1,118.4-38
- c-46.2,5.2-92.4,10-138.7,14.4C1408.3-21.7,1402-22.3,1374.5,4.9"/>
- <path class="st1" d="M1945.2,246.8c-7.6-16-0.8-35.2,15.2-42.8c16.1-7.6,35.4-0.8,43,15.3c0.7,1.4,1.3,2.9,1.7,4.5
- c-15.3,11.4-29.3,24.7-41.1,40.2C1956.1,260.8,1949.1,255,1945.2,246.8 M2302.9,108.4c1.3-13.2,12.6-23,25.8-21.7
- c13.3,1.3,23,13.1,21.7,26.3c-0.3,2.7-1,5.4-2.2,7.9c-12.1,2.1-24.2,5.6-36.7,10.2C2306.3,125.8,2302.2,116,2302.9,108.4"/>
+ <path class="st0" d="M2198.7,415.2l-1.7,0.3l-1.5,0.7l-1.3,0.8l-1.2,1.5l-0.7,0.7l-0.7,0.2l-0.2-0.4l0.3-0.4l0.1-0.6l0.2,0l0.2,0.2
+ l-0.1-0.6l-0.3-0.2l0-0.2l-0.6,0.3l-0.5,0.6l-0.1,0.6l0.2,0.5l0.2,0.8l0.4,0.2l0.5,0l0.4-0.3l-0.3,1.5l0.3,1.6l-0.3,0.8l-1,1.1
+ l0.2,0.7l0.5,0.8l0.9,0.7l0.5,0.1l0.6,0l-0.3,1.4l1.3,0.5l1.6,0.2l0.5-0.4l0-1l0.6-1l0-0.8l1.5,0.1l1.3-0.1l-1.3,0.8l0.2,1l0.8,1.3
+ l0.8,0.4l0.7-0.3l0.3-0.5l1.4-1.1l0.3,0.2l2.2,0.1l0.4-0.4l0-0.6l-0.1-0.3l-0.1-1.7l-0.7-1.5l0.1-0.6l0.4,0.2l1.2,1.1l0.6,0
+ l0.7-0.3l0.7-0.5l0.3-1.1l1.9,0.1l1.2-0.5l1-0.9l0.7-1.3l0.2-1.5l-0.1-1.8l-0.4-1.6l-0.4-0.5l-0.5-0.2l-0.9,1l-0.8,0.3l-0.7-1.2
+ l-0.7-0.7l-0.4-0.2l-1.6-1.3l-1.3-0.7l-1.3-0.1l-1.5,0.2l-1.3,0.5l-0.9,0.7l-0.7,0.9l-0.7,0.2L2198.7,415.2"/>
+ <path class="st1" d="M2193.9,418.9c-1.4,1.7-1.1,3.7-0.7,5.6c-0.2-0.5-0.4-1.1-0.6-1.6l-0.2-1.5c0-0.5,0-1,0.1-1.5l0.6-1.4l0.9-1.3
+ l1.4-1.2l1.5-0.6l1.8-0.2l-1.7,1.9C2195.6,417.5,2194.8,417.8,2193.9,418.9"/>
+ <path class="st1" d="M2200.6,413.9c-1,1-1.5,1.7-2.2,2.8c-0.4,0.8-1,1.6-1.4,2.4c-0.2,0.4-0.3,0.7-0.3,1.2l-0.7-0.8
+ c0.1-0.3,0.2-0.7,0.3-1l1.1-2l2.4-2.4C2200.1,414,2200.3,413.9,2200.6,413.9 M2205.5,411.5c-0.8,0.3-2.1,0.4-2.2,1.3
+ c-0.1,0.6,0,1,0.4,1.7c-1-1-1.2-0.8-3.1-0.5l0.8-1.1l1.4-0.9l1.8-0.4L2205.5,411.5"/>
+ <path class="st2" d="M2207.7,423.8c0.3,0.2,0.3,0.3,0.2,0.4c0.2-0.1,0.4-0.2,0.6-0.2l0.4-0.5l0.3-0.8l-0.4-0.3l-1.7,0.2
+ c0,0.1-0.1,0.2-0.1,0.3c0,0.2,0,0.3,0,0.5c0.1,0.1,0.1,0.2,0.2,0.3c0.1,0,0.2,0.1,0.2,0.1C2207.5,423.7,2207.6,423.7,2207.7,423.8
+ M2207.5,420.9c-0.8,0.2-0.8,0.3-1.1,1.1C2206.7,421.5,2207,421.2,2207.5,420.9 M2213.1,414.7c-0.1,0.1-0.3,0.1-0.4,0.2
+ c-0.2,0.3-0.4,0.5-0.7,0.7c-0.2,0.1-0.3,0.2-0.5,0.2c-0.1,0-0.2,0-0.4,0.1c0.1,0,0.1,0,0.2,0h0.5l0.6-0.4l0.4-0.4L2213.1,414.7
+ M2199.7,416.5c-0.3,0.9-0.6,1.7-1.1,2.5c0.6-0.7,1-1.3,1.4-2.1c0.1-0.3,0.2-0.7,0.6-0.5c0,0.3,0.1,0.6,0.1,0.9
+ c0.2-1.5,0.8-2.2,2.2-2.8l-1.2,0.1l-1.1,0.2l-0.6,0.8L2199.7,416.5 M2202.4,416.5c0.3,1.4,0.7,2.8,0.9,4.2c0.1,0.9,0.1,1.4-0.3,2.2
+ c-0.5,0-0.8,0-1.3,0.2c-2,0.7-3.1,1.6-4.5-0.3l1.3,0.6c0.3-0.1,0.6-0.1,0.9-0.2c0.5-0.3,1.1-0.6,1.6-0.9l1.3-0.2l0.4-1.7l-0.3-2.3
+ c0-0.4,0-0.7,0-1.1C2202.4,416.8,2202.4,416.7,2202.4,416.5 M2205.9,425.3c-0.2,1.2,0.4,1.8,0.2,2.1c-0.1,0.1-0.2,0.2-0.3,0.3
+ c-0.4,0.2-0.8,0-0.9,0.1h-1.2l-0.5-0.2l0.7-0.8c0.2-0.5,0.5-1,0.7-1.5l0.4-1.5h0.2L2205.9,425.3"/>
+ <path class="st2" d="M2203.9,421.9c0.1,0.5,0.3,0.7,0.5,1.2c-0.2,0.8-0.4,1.8-0.7,2.6c-0.1,0.3-0.2,0.5-0.5,0.7
+ c-0.4,0.4-0.8,0.8-1.3,1.1c-0.3,0.3-0.6,0.1-1,0.1c-0.2,0.3-0.2,0.5-0.5,0.6c-0.5,0.2-0.9-0.3-1.3-0.6c0.3,0.4,0.5,0.9,0.8,1.3
+ c0.2,0.2,0.4,0.4,0.6,0.5l0.5,0.1l0.6-0.4c0.1-0.2,0.2-0.4,0.3-0.6c0.2-0.2,0.5-0.4,0.7-0.5c0.3-0.2,0.6-0.5,0.9-0.7l0.6-0.8
+ l0.5-0.9c0.2-0.6,0.4-1.3,0.6-1.9c0-0.2,0-0.5,0.1-0.7c-0.3-0.1-0.5-0.2-0.8-0.4C2204.3,422.3,2204.1,422.1,2203.9,421.9
+ M2197.5,425.7c0.9,0,1.8-0.1,2.7-0.4c0.2-0.3,0.5-0.6,0.7-0.9c-0.3,0.5-0.3,0.8-0.4,1.3l-0.3,0.4c-0.7,0-1.4,0-2,0.1
+ c-0.2,0-0.4,0-0.7-0.1c0,0,0,0-0.1-0.1C2197.5,425.8,2197.5,425.7,2197.5,425.7 M2197.4,425l-0.1-0.6c-0.2,0.9-0.1,1.5-0.5,2.4
+ c-0.3,0.4-0.7,0.7-1.2,0.9c0,0.2,0,0.4,0,0.5c-0.1,0.6-1.3,0.3-1.8,0.3l2.4,0.6l0.5-0.2c0.1-0.3,0.1-0.7,0.2-1l0.5-0.9l0.1-0.6
+ L2197.4,425 M2196.1,419.8c0,0.4-0.1,0.6,0.1,1c0.3,0.5,0.6,1,0.8,1.5l0.1-1C2196.8,420.8,2196.4,420.3,2196.1,419.8 M2192.4,423.2
+ c-0.1,0.2-0.2,0.3-0.2,0.5c0.2,0.7,0.4,1.2,0.8,1.8c-0.1,0.3-0.1,0.4-0.3,0.6c-0.4-0.1-0.7-0.1-1-0.1c0.4,0.3,0.8,0.6,1.2,0.9
+ c0.2,0,0.4-0.1,0.6-0.1l0.6-0.6l-0.8-1.3C2193,424.4,2192.7,423.8,2192.4,423.2 M2213.1,414.4c0.2,1.1,0.6,2.1,0.5,3.2
+ c0,1.4-0.3,3.1-1.6,3.9c-1.4,0.9-3.1,0.5-4.6,0.1l1.9,0.8c0.6,0,1.2,0.1,1.8,0.1c0.4-0.1,0.8-0.2,1.2-0.4c0.3-0.3,0.6-0.5,0.9-0.8
+ l0.7-1.5l0.3-1.7c-0.1-0.6-0.1-1.1-0.2-1.7l-0.4-1.7C2213.4,414.7,2213.3,414.5,2213.1,414.4 M2191.9,417.7
+ c-0.6,0.4-0.9,0.6-0.8,1.4l0.2,0.7l0.3,0.2l0.3,0.1l0.6-0.1c0.1-0.3,0.2-0.6,0.3-1l-0.9,0.4h-0.2c-0.1-0.1-0.2-0.2-0.2-0.3l0.3-0.4
+ l0.1-0.8c0.1,0,0.1,0,0.2,0.1c0.1,0.1,0.2,0.1,0.2,0.2l0-0.4l-0.2-0.3c-0.1,0-0.1-0.1-0.2-0.1L2191.9,417.7 M2206.4,411.5
+ c0.6,0.5,1.3,1,1.7,1.6c0.2,0.3,0.4,0.4,0,0.7c0.4-0.1,0.5-0.1,0.9-0.1c0.6,0.1,1.1,0.9,1.2,1.5c0,0.1-0.2,0.2-0.6,0.3
+ c0,0-0.3,0-0.2,0c0,0.1,0.1,0.1,0.2,0.2c0,0.1,0,0.4,0.1,0.5c0.3,0,0.6,0,0.8,0.1c0.1,0.2,0.1,0.3,0.1,0.5l0.3-0.1
+ c0-0.2-0.1-0.5-0.1-0.7c0.1-0.2,0.2-0.3,0.3-0.5l-0.4-0.9c-0.3-0.2-0.5-0.5-0.8-0.7l-0.1,0c-0.3-0.2-0.6-0.4-0.9-0.5l-1.4-1.2
+ L2206.4,411.5 M2207.3,415.9c0,0.1-0.1,0.1-0.1,0.2c0.2,0.2,0.4,0.4,0.4,0.7c-0.3,0.1-0.5,0.3-0.8,0.4l-0.7,0.7
+ c-0.3-0.2-0.4-0.3-0.5-0.6c-0.2,0-0.3,0.1-0.5,0c0.1,0,0.1,0,0.2-0.1l0.4-0.5c0.3-0.2,0.5-0.4,0.8-0.6l0.5-0.2
+ C2207.1,416,2207.3,416,2207.3,415.9"/>
+ <path class="st2" d="M2208.1,416.7c-0.9,0.5-1.7,0.9-2.1,1.8C2205.9,417.4,2207.1,416.9,2208.1,416.7 M2205.8,414.5
+ c-0.6,0.4-1.1,1.3-1,2.2c-0.2-0.7-0.1-1.4,0.5-1.9c0.1-0.1,0.2-0.1,0.3-0.2C2205.6,414.6,2205.7,414.6,2205.8,414.5"/>
+ <path class="st3" d="M2214.3,416.6c-0.1-0.7-0.3-1.4-0.6-1.9c0-0.1-0.1-0.1-0.1-0.2c-0.1-0.1-0.3-0.3-0.5-0.3
+ c-0.2-0.1-0.4-0.1-0.6,0c0,0-0.1,0.1-0.1,0.1c-0.1,0.1-0.2,0.3-0.3,0.4c-0.1,0.2-0.2,0.3-0.3,0.4c-0.2,0.1-0.3,0.2-0.5,0.3
+ c-0.1-0.2-0.2-0.4-0.3-0.5c-0.1-0.2-0.3-0.4-0.4-0.6c-0.1-0.1-0.2-0.3-0.4-0.4c-0.1-0.1-0.3-0.2-0.4-0.3c-0.4-0.3-0.8-0.6-1.2-0.9
+ c-0.2-0.1-0.3-0.3-0.5-0.4c-0.9-0.7-1.7-1.1-2.6-1.1c-0.9-0.1-1.8,0.2-2.9,0.6c-0.5,0.2-0.9,0.5-1.2,0.8c-0.3,0.3-0.6,0.6-0.9,1
+ c-0.2,0-0.3,0-0.5,0.1c-0.2,0.1-0.4,0.2-0.6,0.4c-0.1,0.1-0.3,0.3-0.4,0.4c-0.1,0.1-0.3,0.3-0.4,0.4c-1,0.2-1.8,0.3-2.5,0.6
+ c-0.7,0.3-1.4,0.7-2,1.3c-0.3,0.2-0.5,0.5-0.7,0.8c-0.2,0.3-0.4,0.5-0.5,0.8c-0.1,0.1-0.3,0.3-0.4,0.4c-0.1,0.1-0.3,0.2-0.5,0.3
+ l0,0c-0.1,0-0.1,0.1-0.1,0.1c0,0,0,0,0,0c0.2-0.2,0.3-0.6,0.3-0.9c0,0,0.1,0.1,0.1,0.1c0,0,0.1,0.1,0.1,0.1l0.2,0.2l0.1-0.3
+ c0-0.2,0.1-0.5,0-0.8c0-0.2-0.1-0.3-0.2-0.4c0,0,0-0.1,0-0.1c0-0.1,0.1-0.2,0.1-0.3l0.1-0.2l-0.2,0c-0.3,0-0.9,0.4-1.3,0.8
+ c-0.2,0.2-0.3,0.3-0.4,0.5c-0.1,0.2-0.1,0.4-0.1,0.6c0,0.2,0.1,0.4,0.3,0.5c0,0.1,0.1,0.2,0.1,0.3c0,0.1,0.1,0.2,0.1,0.3
+ c0.1,0.3,0.3,0.4,0.5,0.5c0.2,0.1,0.4,0.1,0.6,0c0,0.2-0.1,0.5-0.1,0.7c0,0.3,0,0.7,0,1.1c0,0.1,0,0.2,0,0.3c0,0.1,0,0.2,0,0.3
+ c0,0.1-0.1,0.2-0.1,0.3l-0.2,0.5l-0.4,0.4c-0.1,0.1-0.2,0.2-0.4,0.4c0,0-0.1,0-0.1,0.1c-0.2,0.2-0.3,0.3-0.2,0.7
+ c0,0.3,0.1,0.5,0.3,0.7c0.1,0.2,0.3,0.4,0.5,0.6c0.3,0.3,0.7,0.6,1.1,0.7c0.2,0.1,0.5,0.1,0.7,0.1c0,0,0,0.1,0,0.1
+ c0,0.1-0.1,0.2-0.1,0.3c-0.3,0.6,0,1,0.5,1.2c0.2,0.1,0.5,0.2,0.8,0.2c0.1,0,0.1,0,0.2,0c0.3,0.1,0.8,0.2,1.3,0.3
+ c0.5,0,1-0.1,1.1-0.6c0.1-0.2,0.1-0.3,0.1-0.5c0-0.1,0-0.3,0-0.4c0.2-0.3,0.2-0.4,0.3-0.6c0,0,0-0.1,0.1-0.1
+ c0.1-0.2,0.2-0.3,0.2-0.4c0-0.1,0-0.3,0-0.5c0,0,0,0,0-0.1c0.3,0,0.6,0.1,0.9,0.1c0.2,0,0.3,0,0.5,0c0,0-0.1,0-0.1,0.1l-0.1,0
+ c-0.4,0.2-0.4,0.6-0.3,1c0.1,0.4,0.4,0.8,0.5,1c0.3,0.5,0.6,0.9,1,1.1c0.4,0.2,0.8,0.3,1.4,0c0.3-0.2,0.4-0.3,0.5-0.5
+ c0-0.1,0.1-0.1,0.1-0.2c0.1-0.1,0.4-0.3,0.7-0.6c0.1-0.1,0.2-0.2,0.3-0.3c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.3,0.1,0.5,0.1
+ c0.2,0,0.7,0,1,0c0.1,0,0.2,0,0.2,0c0.3,0,0.6,0,0.8-0.1c0.2-0.1,0.3-0.3,0.4-0.7c0-0.2,0-0.3,0-0.4c0-0.1-0.1-0.2-0.1-0.3
+ c0-0.2,0-0.3,0-0.5c0-0.2,0-0.4,0-0.5c0-0.2,0-0.4-0.1-0.6c0-0.2-0.1-0.3-0.2-0.5c-0.1-0.1-0.1-0.2-0.1-0.4l-0.1,0l0,0l0.1,0l0,0
+ c-0.1-0.2-0.1-0.4-0.2-0.6c0,0,0-0.1,0-0.1l0.2,0.2l0.3,0.3c0.2,0.2,0.4,0.4,0.6,0.5c0.2,0.1,0.5,0.2,0.8,0.2
+ c0.4,0,0.7-0.2,1.1-0.4c0.3-0.2,0.5-0.5,0.7-0.9l0.1-0.3l0.1-0.2c0.5,0.1,1,0.1,1.6,0.1c0.5-0.1,1-0.2,1.4-0.4
+ c0.6-0.3,1.1-0.8,1.4-1.4l0,0c0.4-0.6,0.6-1.4,0.7-2.2C2214.5,418.2,2214.5,417.4,2214.3,416.6L2214.3,416.6z M2207.8,421.8
+ c-0.3-0.1-0.5-0.2-0.7-0.4c0.1,0.3,0.1,0.6,0,1c-0.1,0.5-0.4,1.3,0.3,1.4c0.3,0.1,0.4,0,0.7-0.1c-0.3,0.1-0.4,0.1-0.6,0
+ c-0.2,0-0.3-0.1-0.3-0.3c0.1,0,0.2,0.1,0.3,0.1c0.5,0.1,1-0.1,1.1-0.5c0.1-0.2,0-0.3,0.2-0.6c0.1,0,0.2,0.1,0.3,0.1l-0.2,0.6
+ c-0.2,0.5-0.8,0.9-1.3,0.9c-0.5,0-0.8-0.3-1.2-0.6c-0.2-0.2-0.5-0.4-0.7-0.6c-0.6-0.2-1.1-0.4-1.7-0.9c0.4,0.5,0.7,0.8,1.3,1
+ c-0.1,0.9-0.4,1.5-0.6,2.3c-0.1,0.4-1,1.9-1.3,2c-0.2,0.1-1.3,1.1-1.5,1.2c-0.2,0.2-0.3,0.5-0.5,0.6c-0.7,0.4-1.2-0.4-1.6-1
+ c-0.2-0.3-0.7-1.1-0.2-1.3c0.4-0.2,0.6-0.4,1-0.6c0.1,0.1,0.2,0.2,0.2,0.3l0-0.4c0-0.2,0-0.4,0-0.6c0-0.2,0-0.4,0.1-0.6
+ c-0.1,0.2-0.2,0.4-0.2,0.7c0,0.1,0,0.2-0.1,0.2c-0.9,0.2-1.9,0.2-2.8,0c-0.1-0.3-0.1-0.7-0.2-1c0,0.3,0,1.1,0,1.5
+ c0,0.3,0,0.5-0.2,0.8c-0.2,0.3-0.2,0.3-0.5,0.8c0,0.3,0,0.5-0.1,0.8c-0.1,0.5-1.4,0.1-1.8,0c-0.4-0.1-1.3-0.3-1.1-0.9
+ c0.2-0.5,0.3-1,0.4-1.7c-0.8-1.1-1.5-2.7-1.6-4c-0.1-1.1,0-1.7,0.2-2.4c0.4-1,0.9-1.9,1.7-2.6c1.1-1,2.1-1.4,3.7-1.6
+ c-0.4,0.4-0.8,0.9-1.2,1.4c-0.4,0.5-0.7,1-0.9,1.5c-0.4,0.8-0.4,1,0.1,1.7c0.4,0.6,0.7,0.8,0.8,1.4c-0.2,0.3-0.2,0.6-0.3,1
+ c0.5,0.6,0.9,1,1.4,1.1c0.5,0.1,0.9,0.1,1.3-0.1c1-0.5,1.9-1.1,3-1.2c0.5-1.3,0.5-2.3,0.2-3.5c-0.2-0.8-0.2-1.6-0.3-2.5
+ c-0.2,0.9-0.2,1.6-0.1,2.5c0.2,1,0.3,2.2-0.2,3.1c-1,0.1-1.9,0.7-2.8,1.2c-0.4,0.2-0.7,0.2-1.1,0.1c-0.4-0.1-0.6-0.3-1-0.8
+ c0-0.5,0.1-0.7,0.3-1.1c0.3-0.7,0.7-1.3,1.1-2c-0.5,0.6-1,1.1-1.4,1.7c-0.2-0.4-0.4-0.7-0.7-1.1c-0.4-0.5-0.4-0.7-0.1-1.2
+ c0.3-0.6,0.5-1,0.9-1.5c0.8-0.8,1.5-1.8,2.4-2.6c0.5-0.5,0.7-0.4,1.3-0.5c0.6-0.1,1.1-0.2,1.7-0.3c-0.5,0.1-1.1,0.1-1.6,0.1h0
+ c0.5-0.7,0.8-1,1.7-1.4c2.1-0.9,3.4-1,5.1,0.4c0.4,0.4,0.8,0.7,1.2,1c-0.2,0-0.3,0-0.5,0.1c0.2,0,0.5,0,0.7,0
+ c0.1,0,0.1,0.1,0.2,0.1c0.3,0.2,0.5,0.3,0.7,0.6c0.2,0.3,0.4,0.6,0.6,0.9c-0.1,0-0.2-0.1-0.3-0.1c-0.2-0.1-0.4-0.1-0.6,0l0,0
+ c-0.2,0.1-0.4,0.2-0.6,0.2c0.1,0,0.3,0,0.4,0c0,0,0,0,0,0c0,0.1-0.1,0.2-0.1,0.2c0,0.1,0,0.2,0.1,0.3v0c0,0,0,0.1,0.1,0.1
+ c-0.1,0-0.2,0.1-0.2,0.1c0.4-0.1,0.7-0.1,1.1,0c0,0.1,0.1,0.2,0.1,0.4l-0.1,0c0,0,0,0,0,0c-0.2-0.1-0.4-0.1-0.7-0.1
+ c-0.8,0.2-0.6,0.7-1,1.4c0.4-0.5,0.4-1,1-1.2c0.2,0,0.3-0.1,0.4-0.1c-0.2,0.1-0.3,0.2-0.4,0.4c-0.2,0.5-0.1,0.9-0.3,1.4
+ c0.2-0.4,0.3-0.8,0.5-1.3c0.1-0.2,0.4-0.4,0.5-0.4l0.1,0c0,0.3,0.1,0.6,0.1,0.8c0,0.4-0.1,1-0.2,1.3c0.2-0.3,0.3-0.9,0.4-1.3
+ c0.1-0.4,0.1-1,0-1.4c-0.1-0.6,0.5-0.5,0.9-0.8c0.3-0.2,0.5-0.6,0.7-0.8c0.3-0.3,0.7,0.1,0.8,0.4c0.4,1.1,0.6,2.8,0.5,3.8
+ c-0.1,1.2-0.7,2.5-1.8,3.1C2210.8,422.7,2209.2,422.3,2207.8,421.8L2207.8,421.8z M2205.9,427.2c0,0.5-0.2,0.5-0.7,0.5
+ c-0.2,0-1,0-1.2,0c-0.3,0-0.4-0.1-0.5-0.1c0.4-0.3,1.2-1.7,1.4-2.2c0.2-0.5,0.3-0.9,0.5-1.4c0.1,0.2,0.1,0.4,0.2,0.6
+ c0.1,0.3,0.2,0.5,0.2,0.9l0,1.1C2205.9,426.9,2205.9,426.9,2205.9,427.2L2205.9,427.2z M2192.5,423.4c0.3,1,0.8,1.9,1.3,2.8v0
+ c0,0.1-0.1,0.3-0.2,0.4c-0.4,0.5-1.4-0.2-1.6-0.5c-0.3-0.3-0.5-0.7-0.6-1c0-0.3,0-0.3,0.2-0.4l0.7-0.7L2192.5,423.4L2192.5,423.4z
+ M2191.9,417.2c-0.1,0.2-0.1,0.3-0.2,0.4c-0.2,0.5,0.1,1-0.4,1.4c0.2,0.5,0.2,0.6,0.7,0.4c0.2-0.1,0.4-0.2,0.5-0.3
+ c-0.1,0.2-0.1,0.4-0.2,0.6c0,0,0,0.1,0,0.1c-0.4,0.2-0.9,0.3-1.1-0.1c-0.1-0.2-0.1-0.4-0.2-0.6
+ C2190.5,418.4,2191.4,417.5,2191.9,417.2L2191.9,417.2z M2192.2,417.9c-0.1-0.1-0.1-0.1-0.2-0.1c0-0.1,0-0.1,0-0.2c0,0,0-0.1,0-0.1
+ C2192.2,417.6,2192.2,417.7,2192.2,417.9L2192.2,417.9z M2210.7,415.5c0,0,0,0.1,0.1,0.1c0,0,0,0-0.1,0c0-0.1-0.1-0.1-0.1-0.2
+ C2210.6,415.5,2210.7,415.5,2210.7,415.5L2210.7,415.5z M2192.9,418.4L2192.9,418.4L2192.9,418.4L2192.9,418.4z M2197.6,426.1
+ L2197.6,426.1L2197.6,426.1z M2203.2,427.8L2203.2,427.8L2203.2,427.8z M2205.5,423.5L2205.5,423.5L2205.5,423.5L2205.5,423.5z
+ M2192,419.2L2192,419.2L2192,419.2L2192,419.2L2192,419.2z M2213.7,421L2213.7,421L2213.7,421z M2189.8,419
+ c0.1-1.1,0.3-1.6,1.1-2.4C2189.9,417.3,2189.7,417.6,2189.8,419"/>
+ <path class="st3" d="M2189.5,418.1c0.1-0.5,0.2-0.7,0.5-1.1C2189.6,417.4,2189.5,417.5,2189.5,418.1 M2201.2,411.1
+ c-0.6,0.1-0.7,0.3-0.9,0.8C2200.6,411.5,2200.7,411.4,2201.2,411.1"/>
+ <path class="st3" d="M2202.1,411c-1.2,0.3-1.5,0.5-1.9,1.9C2200.7,411.9,2201.1,411.5,2202.1,411 M2204.6,416
+ c0.1-0.6,0.3-1.1,1.2-1.5C2204.7,414.8,2204.5,415.3,2204.6,416 M2211.9,416.1c0.7-0.2,1-0.8,1.2-1.4c-0.3,0.5-0.7,1-1.2,1.3
+ c-0.3,0.1-0.5,0.1-0.8,0.1C2211.4,416.1,2211.6,416.2,2211.9,416.1 M2207.3,416.6c-0.1-0.2-0.2-0.3-0.4-0.4
+ c0.2-0.1,0.3-0.2,0.5-0.3c-0.4,0.2-0.8,0.1-1.1,0.3c-0.3,0.2-0.7,0.8-1,1.1c0.2-0.1,0.4-0.2,0.6-0.4c0,0.3,0.2,0.5,0.4,0.7
+ c-0.1,0.1-0.2,0.3-0.3,0.5c0.5-0.6,1.3-1.1,2.1-1.3c-0.2,0-0.5,0-0.7,0.1C2207.4,416.8,2207.3,416.7,2207.3,416.6 M2206.5,421.5
+ c0,0.2-0.1,0.4-0.1,0.5c0.1-0.2,0.2-0.4,0.2-0.6c0.1-0.2,0.1-0.2,0.3-0.3c0.1-0.1,0.4-0.2,0.5-0.2c-0.1,0-0.4,0.1-0.5,0.1
+ C2206.6,421,2206.6,421.1,2206.5,421.5 M2200.3,415c-0.4,0.4-0.8,1.8-1,2.4c0.2-0.5,0.7-1.8,1.1-2.1c0.1-0.1,0.2-0.2,0.3-0.2
+ c-0.3,0.5-0.3,0.6-0.2,1.2c0.1-0.6,0.3-0.9,0.7-1.4c0.4-0.1,0.8-0.2,1.2-0.4c-0.5,0.1-0.9,0.1-1.4,0.1
+ C2200.7,414.8,2200.6,414.8,2200.3,415"/>
+ <path class="st1" d="M2206.1,417.4c-0.1-0.2,0-0.4,0.2-0.4c0.2-0.1,0.4,0,0.4,0.2c0,0,0,0,0,0c-0.2,0.1-0.3,0.2-0.4,0.4
+ C2206.2,417.6,2206.1,417.5,2206.1,417.4 M2209.6,416.1c0-0.1,0.1-0.2,0.3-0.2c0.1,0,0.2,0.1,0.2,0.3c0,0,0,0.1,0,0.1
+ c-0.1,0-0.2,0.1-0.4,0.1C2209.7,416.2,2209.6,416.1,2209.6,416.1"/>
</g>
</svg>
diff --git a/components/datalake-handler/admin/src/src/assets/icons/hadoop_disable.svg b/components/datalake-handler/admin/src/src/assets/icons/hadoop_disable.svg
index 8bfd2664..6ca5ac02 100755
--- a/components/datalake-handler/admin/src/src/assets/icons/hadoop_disable.svg
+++ b/components/datalake-handler/admin/src/src/assets/icons/hadoop_disable.svg
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="圖層_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- viewBox="285 -392.5 2490.2 1865.5" style="enable-background:new 285 -392.5 2490.2 1865.5;" xml:space="preserve">
+ viewBox="2179.6 407.7 24.9 24.9" style="enable-background:new 2179.6 407.7 24.9 24.9;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D2D3D5;}
.st1{fill:#E1E2E3;}
@@ -9,140 +9,115 @@
.st3{fill:#A8A8AA;}
</style>
<g>
- <path class="st0" d="M1202.7,18.8l-165.6,26.9L886,111.9l-128.3,80.7l-122.1,149l-69,73.1l-66.7,24.6l-17.6-43.1l30.8-44.5
- l6.9-62.8l20.7,0.8l22.6,20.6l-6.1-64l-25-16.8l0.8-24.4l-59.3,33.5L420,301.9l-11.3,56.7l23,45.3l21.4,77l43.5,20.6l45.8-2.2
- l43.4-25.2l-29,146.9l29,163.5L553.9,860L449.5,972.6l18.6,67.2l49.5,77.9l93.3,65.7l49.5,6.8l55,1.9L681.1,1333l126.2,51.7
- l157.3,20.7l53.8-35.2l4.1-95.2l60-99.3l4.1-78.6l144.9,10.4l134.5-12.4l-134.5,80.7l22.8,97.3l84.8,132.5l82.8,35.2l66.2-26.9
- l26.9-53.8l138.7-105.5l26.9,22.8l217.3,8.3l43.5-35.2l4.1-62.1l-14.5-26.9l-10.4-167.6L1848.2,849l12.4-64.2l43.5,22.8
- l122.1,113.8l60,4.2l66.2-26.9l66.2-49.7l33.1-107.6l194.6,12.4l118-45.5l95.2-89l68.3-128.3l16.5-151.1L2729.8,164l-37-157.6
- l-37.3-49.7l-51.7-16.6l-91.1,99.4l-82.8,29l-72.4-120l-72.4-66.2l-39.3-24.8l-157.3-130.4l-126.2-68.3l-126.2-10.3l-146.9,24.8
- l-128.5,47.4l-89,72.4l-70.4,84.9l-72.4,20.7L1202.7,18.8"/>
- <path class="st1" d="M722.4,392.3c-141.8,165.4-110.3,366-71,562.6c-21-53-42-106-62.9-159l-23.2-145.8
- c2.2-49.7,4.4-99.4,6.6-149.1l59.6-142.4l89.4-132.5L860,110.2l152.4-62.9l178.9-23.2l-165.6,188.8
- C892.7,256,814.3,285.1,722.4,392.3"/>
- <path class="st1" d="M1390.1-111.7c-98.6,96.2-152.4,168.8-215.2,281.4c-44.9,80.6-95.2,158.2-142.4,237.6
- c-23.9,40.2-26.1,73.9-33.3,120.3l-69.5-82.8c11.1-33.1,22.1-66.2,33.1-99.4l112.6-202.1l238.5-235.2
- C1339.3-98.5,1364.7-105.1,1390.1-111.7 M1877-350.2c-79,29.6-210.1,39.4-219.2,130c-6.5,64.4,4.9,96.7,43.7,164.8
- c-95.8-99.2-119.5-83.8-304.7-53l79.5-112.6l139.1-86.1l178.9-39.7L1877-350.2"/>
- <path class="st2" d="M2094.9,875.8c26.3,16.2,25.7,28,21.3,39.1c20.7-8.3,41.5-16.6,62.2-24.9l40.3-54.1l30-77.1l-38.2-28.7
- l-167.1,21.3c-4.1,11.2-8.3,22.5-12.4,33.8c1.2,16,2.4,32,3.6,48c5.3,9.5,10.7,19,16,28.4c8.3,4.1,16.6,8.3,24.9,12.4
- C2081.9,874.6,2088.4,875.2,2094.9,875.8 M2079.4,590.1c-83.8,24.2-83.1,30.8-107.8,113.9C2004.2,651.6,2028.4,625.2,2079.4,590.1
- M2636.2-31.7c-14.9,6.9-29.4,10.2-38.7,23.8c-20,29.3-37.2,54-70.3,74.6c-16.7,10.4-33.9,17.1-51.6,22.6
- c-14.7,4.6-23.5,0.5-36,9.5c7.4,1.3,14.8,2.6,22.2,3.9h49l60.4-37.3l35.5-37.3L2636.2-31.7 M1302.1,154.1
- c-32.9,90.2-61.7,167.5-111.6,249.1c63.9-68.9,102.7-127.5,139.4-205.4c14.2-30.3,16.9-65.8,56.6-52.6c1.8,30.2,8.2,60.4,9.9,90.6
- c21.4-153.5,81.8-217.7,222.2-277.3l-119.1,14.3l-112,24.9l-55.1,80L1302.1,154.1 M1574.1,150.6c30.3,142.5,73.9,279.2,92.8,424
- c12.3,94.1,13.6,139.2-33.7,220.4c-51.7-3.3-83.8,2.5-133.9,18.9c-199.2,65.3-313.4,161.3-447.6-32.1l128.5,60.6
- c30.5-6,61.1-12,91.6-18c53.9-31.4,107.8-62.8,161.8-94.2l126.2-24.9l40.9-170.6l-30.1-225.9c-1.2-35.5-2.4-71.1-3.6-106.6
- C1569.4,185,1571.8,167.8,1574.1,150.6 M1917.2,1032.2c-16.7,115.8,38.5,178,15.6,210c-6.5,9-15.3,24.8-25,29.2
- c-35,15.5-83.1-2.9-86.6,6.2h-115.5l-46.2-19.6l71.1-83.5c23.1-50.4,46.2-100.7,69.3-151.1l44.4-152.9h23.1L1917.2,1032.2"/>
- <path class="st2" d="M1723,695.7c9.4,52.6,25.7,65,50.4,115.9c-16.5,83-42.9,181.7-74.7,255c-13.4,30.9-24.2,47.9-47.9,71.8
- c-39.9,40.3-80.3,75.4-125.6,110.4c-32.6,25.1-55.4,12.5-95.6,6.8c-17.1,31-21.8,48.2-53.3,64c-48.4,24.2-91.7-28-129.8-58.7
- c27.4,42.9,54.9,85.7,82.3,128.6c19,17.8,37.9,35.5,56.9,53.3l48,7.1l64-39.1c11.3-21.3,22.5-42.7,33.8-64
- c23.7-17.8,47.4-35.5,71.1-53.3c29-24.9,58.1-49.8,87.1-74.6l55.1-78.2l49.8-92.4c21.3-64,42.7-128,64-192
- c1.8-24.3,3.5-48.6,5.3-72.9c-26.7-11.8-53.3-23.7-80-35.5C1764.3,729.5,1742.5,714.1,1723,695.7 M1085.3,1066
- c89.7,0,184.5-5,266.6-42.7c23.2-34.9,46.2-63.4,74.6-94.2c-25.9,48.9-34,76.5-40.9,131.5l-26.7,39.1
- c-67.5,1.8-135.1,3.5-202.6,5.3c-21.9-2.4-43.8-4.7-65.8-7.1c-2.4-2.4-4.7-4.8-7.1-7.1C1084.1,1082.6,1084.7,1074.3,1085.3,1066
- M1072.9,1003.8l-7-63.1c-15.3,92.3-11.6,154.1-54.1,236.7c-31.7,36.7-70.8,70.2-115.5,88.1c3.8,22.7,4.9,36.8,2.7,53.4
- c-7.9,59.8-127.4,33.4-176.6,31l236.7,60.9l53.3-21.3c5.9-34.4,11.9-68.7,17.8-103.1l49.8-92.4l8.9-56.9L1072.9,1003.8 M939.5,483
- c-2.5,44.9-5.4,63.6,14.4,103.2c25.1,50.4,56,97.7,83.3,147.4l8.9-99.5C1010.7,583.7,975.1,533.3,939.5,483 M574.7,821.8
- c-7.7,16.4-15.4,32.8-23.1,49.1c21.2,71.3,40,116.5,80.3,178.8c-7,25.2-12.3,36.3-28.4,56.9c-35.5-5.4-67-7-103-6.9
- c39.7,30.8,79.4,61.6,119.1,92.4c19.6-3.6,39.1-7.1,58.7-10.7l58.7-58.7l-83.5-129.8C627.1,936,600.9,878.9,574.7,821.8
- M2636.5-55.3c24.2,108.8,55.4,209.1,52.5,320.5c-3.6,136.7-30.2,309.3-156.8,391.7c-141.8,92.3-308.3,48.6-463.9,9.1l190.2,78.2
- c59.2,3,118.5,5.9,177.8,8.9c40.3-11.8,80.6-23.7,120.9-35.5c31.4-26.1,62.8-52.1,94.2-78.2l71.1-149.3l26.7-172.4
- c-7.1-56.3-14.2-112.6-21.3-168.9l-39.1-167.1C2671.2-30.6,2653.9-43,2636.5-55.3 M520.1,268.9c-64.4,41.9-89.7,60.3-82.6,138
- l19.2,69.8l27.3,18.5l33.7,11.2l61-14.4c10.4-32.4,20.9-64.7,31.3-97.1l-86.6,42.5h-20c-7.5-11.5-15-23-22.5-34.5l27.3-40.1
- l14.4-76.2c6.2,1.9,12.3,3.8,18.4,5.6c7.5,5.9,15,11.8,22.5,17.6l-3.2-40.1L545.1,244c-5.1-4.3-10.2-8.6-15.2-12.8L520.1,268.9
- M1964.5-343.1c57.1,53.1,127.3,99.2,173,164c17.7,25.1,37.3,37.9-0.3,73.4c39.8-11.4,54.5-10.1,86.4-6.3
- c57.9,7,112.2,89.3,115.6,148.3c-0.7,5.5-16.1,18-60.9,30.4c-0.9,1.7-25.3-3.3-24.7-1.7c4.7,12.7,10.9,14.7,20.4,20.6
- c2.1,14.2,3.4,36,13,51.5c28.2-0.5,55.7,2.6,83.3,8c9.3,15.4,7.9,30.8,7.1,46.2l32-5.3c-2.9-24.3-5.9-48.6-8.9-72.9
- c9.5-16,18.9-32,28.4-48l-40.7-92.3c-26.1-24.9-52.1-49.8-78.2-74.7l-7.5-0.4c-29.3-18-58.6-36-88-54L2071-273.7L1964.5-343.1
- M2060.8,94.9c-3,5.3-7.6,13.7-13.4,19.5c23.8,22.5,35.5,37.6,44,69.4c-26.9,13.3-53.8,26.7-80.7,40.1l-68.3,65.5
- c-30-16.1-37.4-28.5-51.9-59.3c-16.9,4.5-32.9,8.8-46.8,3.7c8.8,0.1,14.3-2.1,23.1-7.6l43.5-45.1c25.6-19.4,51.2-38.8,76.8-58.1
- l50.2-16.4C2043.6,103.9,2054.4,97.5,2060.8,94.9"/>
- <path class="st2" d="M2135.1,175.1c-85.6,46.1-167.6,92.4-211.3,180C1923.7,244,2035.3,195.1,2135.1,175.1 M1906.7-43.4
- c-63.6,43.3-108.5,130.8-102.9,216c-20.7-73.8-13.4-143.5,50.2-194.5c10.7-5.2,21.5-10.4,32.2-15.6
- C1893.1-39.5,1899.9-41.4,1906.7-43.4"/>
- <path class="st3" d="M2762.1,157.8c-11.5-72.7-30.6-143.2-57.2-194c-3.2-6.2-8.1-12.5-14.2-18.5c-13.2-13-32.7-25.3-52.8-32.2
- c-21.3-7.3-43.9-8.8-61.7,0.5c-4.6,2.4-9,5.6-12.8,9.5c-11.6,11.7-21.3,26-31.1,40.2c-10.9,15.9-21.8,31.9-34.9,43
- c-15.2,13-34.1,20.8-52,28c-7.5-18.3-16.6-35.9-27.1-52.6c-12.2-19.5-26.2-37.8-41.5-56.1c-11.2-13.5-23.9-25.6-37.9-36.2
- c-13.2-10.1-26.8-18.6-42.5-28.4c-42.3-26.5-78.2-58-114.9-90.2c-16.7-14.6-33.5-29.4-50-43c-87.4-72.1-168.9-107-256.1-112.5
- c-86.6-5.4-178,18.3-286,63.8c-52.1,21.9-90.8,47.8-124.5,79c-32.2,29.8-59.5,64.1-89.6,104.1c-17.5,1.2-33,3.8-48.8,10.2
- c-17.4,7-35,18.3-56,36.8c-14.6,12.9-29,26.1-43,39.7C1214.7-38.6,1202-26,1189.7-13c-98.3,15.8-178.4,33.2-250.1,61
- c-73.3,28.4-138,67.5-204.4,126.4c-26.1,23.1-50,48.7-71.2,76.4c-20.2,26.5-37.5,54.3-52.6,83.6c-13.3,14.7-26.6,29.5-41,42.5
- c-14,12.6-29,23.3-45.8,29.8l0,0c-9.8,3.8-13.8,6-14.2,5.8c-0.5-0.3-0.8-1.7-1.4-4.4c24.1-23,27.9-56.8,30.1-90.3
- c2.9,3.5,5.7,7.7,8.5,12.2c3.2,4.9,6.4,10,10.4,14.9l16.4,20.6l5.7-25.7c4.8-21.6,8.4-50.3,2.8-75.2c-3.6-16.2-11.1-30.6-24.2-40.8
- c1.2-3.3,2.4-6.3,3.6-9.2c4.1-10.5,8.3-21.3,11.9-31.4l7.1-20.2l-21.1,3.7c-28.1,4.9-88.4,38-130.9,82.1
- c-15.8,16.4-29.3,34.5-38.2,53.5c-9.3,19.8-13.4,40.4-9.8,61.1c3.1,18.1,12.2,35.8,28.6,52.6c3,12.1,5.8,22.6,8.7,32
- c3.4,10.8,7,20.4,11.6,29.8c12.4,25.7,32.1,41.4,54.9,48.7c18.3,5.9,38.6,6.2,58.5,1.8c-4,23.7-6.5,47.6-7.3,71.6
- c-1.3,33.5,0,70.6,3.7,113.6c0.8,9.4,2,19.8,3.6,31.1c1.4,9.6,3,19.1,4.7,28.5c-3.7,10.1-7.5,20.3-11.2,30.4l-17.4,47.2l-38.2,37.8
- c-11.9,11.7-23.8,23.5-35.6,35.3c-1,1-5,4.8-8.6,8.3c-24.1,23.2-28.8,27.8-22,68.5c4.4,26.1,12.9,51.3,25.2,74.7
- c11.8,22.5,27.7,44.4,48,64.8c25.4,25.4,67,57.1,110.6,73.6c24.9,9.5,50.6,14.1,74.7,10.2c-1.2,3.7-2.4,7.4-3.8,11.1
- c-3.8,10.6-8,21-12.7,31.2c-29.6,64.8,0.8,98.6,48,120.2c23.6,10.7,51.6,18,77.7,24.8c5.3,1.4,10.7,2.8,17.4,4.6
- c30.9,8.3,84.2,23.7,132.9,26.7c53.2,3.4,101.1-7.6,114-55.3c5.1-18.9,8-33.4,9.2-47.6c1.1-13.2,0.7-26.5-0.9-42.9
- c15.2-33.6,21.6-43,32.7-59.2c2.2-3.2,4.8-7,5.6-8.2c11.9-17.6,17.5-30.1,19.5-44.2c2-13.6,0.3-27.1-2.2-47.8
- c-0.2-2-0.6-4.8-1.1-8.6c30.6,4,61.4,6.1,92.3,6.3c15.5,0.1,31-0.4,46.4-1.2c-4,2-7.8,4-12.1,6.2l-5.8,3
- c-41.1,21.1-42.8,61.1-29.9,102.2c11.6,37.1,35.4,75,50.4,98c31.4,48.5,61.5,89.5,97.8,111.8c38.1,23.4,81.7,26.1,137.9-4.3
- c28.6-15.5,37.6-31.3,49.8-52.6c3.7-6.5,7.8-13.6,12.4-20.6c11.8-7.8,41.2-32.1,70.1-56c9.8-8.1,19.7-16.2,30.7-25.2
- c7.6,5.6,16.9,9.5,28,12.2c14.5,3.5,31.7,5,52.4,6.5c15.5,1.1,65.9,1.1,98.4,1.1c10.1,0,18.4,0,23.4,0c33.6,0.2,60.8-1.6,81.3-13.2
- c21.9-12.4,34.8-34.3,37.6-73.7c1.2-17.5,1.5-28.3-1-39.3c-2.3-10.3-6.7-19.7-14.3-33.3c-0.5-17-0.9-34-1.4-51
- c-0.5-18-1-36.1-1.4-54.1c-0.6-21.3-2.9-38.6-7.2-55.6c-4.3-16.9-10.4-33.1-18.6-52.6c-5.1-12.3-9.9-24.7-14.4-37.2l-11.8,4.3
- l1.8-0.7l10-3.7l0,0c-7-19-14-37.4-23.7-57.2c0.6-3.8,1.3-7.9,1.9-12.3l18.7,18.1l27.6,26.6c21.1,20.3,40.3,38.8,63,52.1
- c23.4,13.8,49.7,21.8,83.8,20.2c35.7-1.7,73.9-16.7,105.3-39.9c30.4-22.5,54.8-52.7,65-86.2l8.8-29.1l7.1-23.2
- c50,8.5,103.7,11.2,155.6,5.8c50.1-5.3,98.4-18,140.1-40.3c61.3-32.7,107.3-80.9,140.3-138.1l0,0c36.9-63.9,57.6-139.3,65.4-216.8
- C2778.5,323.9,2775,239.3,2762.1,157.8L2762.1,157.8z M2113.8,680.5c-28.8-9.7-48.9-23.9-74.2-39.8c6.9,31.1,10,64,0.8,95
- c-14.6,49.2-38.1,129.8,28.7,144.6c25.4,5.6,37,4.8,72.9-13.7c-29.1,6.6-43.7,5-63.7,1.3c-18.1-3.3-27.7-14.8-32.8-28.4
- c6.3,4.6,16.6,7,34.3,11.3c49.6,12,96.8-11.9,106-46.3c5.4-20.1,4.5-30.6,15.9-58c10.3,3.2,20.8,6.1,31.7,8.7l-18.4,60
- c-15.9,52-78,93.8-132.8,92.9c-50.6-0.9-82.8-32.6-117.7-63.7c-24.1-21.4-47.3-41.9-70.2-62.3c-63-19.9-113.6-43.1-172.1-86.4
- c41.6,48.9,69.9,76,127.9,100.4c-8.4,86.1-38.4,148.9-63.9,231.4c-11.6,37.3-102.7,186.6-128,201.2c-18,10.4-130.9,105.4-152.1,118
- c-15.8,21-29.7,50-53.5,62.6c-72.4,38.3-119-35-158-97c-17.7-28.2-67-109.5-24.1-132.3c40.6-21.5,63.4-36.9,104.8-64.1
- c6.1,11.1,16.5,21.8,23.3,32.9l-4.5-36.4c-2.7-22-2.6-39.8-0.9-61.9c1.7-21.4,3.4-42.8,5.1-64.2c-6.2,21.8-18.7,43.5-24.9,65.3
- c-2.5,8.7-4.6,15.7-5.7,22.3c-93,19-185.3,20.2-278.4,3.6c-5.9-34.4-13.2-70.3-19.2-96.1c-1.8,28.8-0.7,108.5-0.8,153.1
- c-0.1,34.6-1.6,46.4-19.4,75.8c-16.7,27.5-23.7,33.8-47.1,80.3c2,29.3,2,48.7-5.8,76.6c-13,46.3-143.8,10.4-178.2,1
- c-42.5-11.6-130.3-28.9-108.2-85.5c19.4-49.8,31.8-102.4,41.3-172.1c-77.8-112.1-150.2-265.8-164.1-402
- c-10.8-105.7-4.3-170.8,18.6-235.4c36.2-102.5,87-191.2,168.3-262.6c109.8-96.3,212.4-135,373-159.5c-38.6,43.3-76.9,89-118.5,138
- c-42.2,49.6-67.2,99.8-94,154.1c-37,75-36.2,103.5,12.8,169.4c42.3,56.7,65.1,82.3,83.5,137.8c-15.2,31.4-20.8,58-25.9,100.8
- c51.7,56.6,90.2,95.3,140.4,107.3c49.3,11.7,90.4,9.5,134.5-13.1c97.9-50.1,188.5-114.7,299-117.4
- c51.1-125.6,45.9-230.6,21.4-352.2c-16.8-83-23.5-161.6-28.7-246.2c-20.7,87.2-24.6,163.8-9.2,250.6
- c18.5,104.6,32.9,220.2-18.6,312.2c-99.9,7.6-185.5,68.4-275.5,115c-36.2,18.8-73.9,20.6-113.9,9.6c-37.2-10.2-62.3-34.8-102.3-81
- c-0.6-46.4,9.8-67.8,31.1-109.8c34.2-67.5,72-130.2,113.4-196.6c-50.7,61.3-98.8,112.4-138.8,174c-15.3-43.5-37.1-65.6-73.3-114.6
- c-35.3-47.8-39-68.8-12.6-124.2c26.6-55.6,49.1-104.5,94.3-153.3c78.1-84.3,149.6-178.2,235.1-261.3
- c46.4-45.1,65.2-43.5,126.7-52.9c55.6-8.4,109.9-19.1,166.6-32.2c-54.8,5.1-107.8,7-161.2,8.3h-1.7c52.5-67.1,83-104.5,168.3-141.5
- c210-91.2,343.5-101.1,508.5,37.6c42.8,36,80.1,70.8,123.5,101.9c-15.7,1.3-29.3,4.2-47.2,11.2c21.8-4.2,47,0,69.6,4.1
- c6.3,4.1,12.9,8.1,19.6,12.1c30.6,18,48,28,68.7,56.8c21.9,30.5,40.1,60.9,56.2,94.5c-10.5-3.8-19.4-6.9-27.2-9.3
- c-17.8-8.2-38.6-6.9-55.2,3.4l-1.3,0.6c-16.9,8.3-43.2,17.6-60.7,20.5c9,3.1,28.8,4.2,38.1,0.5c1.2-0.5,2.5-0.9,3.8-1.2
- c-4.3,7.4-7,15.6-7.8,24.1c-1.1,11.2,1.1,22.5,6.3,32.6v0.1c1.6,3.7,3.8,7.2,6.2,9.6c-8,3-16.2,6.3-24.7,10c39.2-6,74.4-7,112.6-2
- c2.5,12,5.1,24.8,7.4,37.8l-14.2,1.1c-0.4,0-0.8,0.1-1.1,0.1c-18.1-14.4-38.2-12-65.7-5.7c-83.7,19.1-64,66-102.5,136.8
- c40-48.8,37-100,102.1-115.4c15.2-3.6,25.5-8.1,35.8-6.5c-18.5,9.3-34.5,24.7-40.8,42.6c-17.9,50.5-6.8,93-26.4,140.2
- c24.3-42.1,25.8-83.3,47.5-127.6c7.8-15.9,36.8-41.4,54.6-41.8l14.6-0.3c4.3,28,6.9,55.9,5.2,79c-3,42.2-14,104.8-20.5,128.7
- c22-28.3,32.1-88.3,41.7-130.6c10.1-44,7.5-96.7-1.3-144c-12.1-64.8,54.6-54.3,93.4-84.8c28.5-22.5,48.1-58.3,74.2-83.7
- c25.9-25.2,66.7,11.8,76.9,36.4c44.2,106.9,64.3,275.1,52.6,382.8C2710,505,2651.6,637,2544.9,696.6
- C2409.2,772.3,2248.9,726,2113.8,680.5L2113.8,680.5z M1920.6,1217.5c-4.4,49.9-21.1,53.2-64.9,52.4c-19.9-0.4-99.2-0.7-119.3-2.4
- c-28.4-2.5-44.4-5-53.1-11.5c44.6-32.8,120.5-168.1,135.3-214.7c15.6-49.2,32.8-92.2,45.5-137.7c5.9,19,10.5,37.9,19,58
- c14.2,33.7,21.2,54.6,22.2,90.8l3.2,114.6C1920.8,1188.5,1922.8,1193.1,1920.6,1217.5L1920.6,1217.5z M576.9,839.6
- c28.3,98.1,76.7,194.5,130.2,275.5v1.4c-3.4,13.9-7.2,27.5-15.4,38.4c-38.3,51.2-135.6-24-163.8-52.7
- c-30.8-31.5-51.4-68.7-56.3-103.6c-3.6-25.5-0.1-26.1,17.7-44.1l71.9-72.8L576.9,839.6L576.9,839.6z M522.8,222.8
- c-7.3,15.6-12.4,27.4-15.9,39.6c-15.3,52.7,6.9,99.8-41,138c22.5,45.4,21.5,63.5,73.8,42.5c20.2-8.1,36.8-19.4,51.7-32.9
- c-7.2,18.7-13.8,37.6-19.8,56.7c-1,3.2-2,6.5-3,9.7c-37.4,15.9-86.6,26-105.4-13.3c-9.1-19.1-14.3-37.8-21-61.9
- C380.5,337.3,472.6,253,522.8,222.8L522.8,222.8z M553,290.4c-7.6-7.6-13.7-12.8-23.5-11.7c0.8-6.4,1.9-12.7,3.5-18.5
- c0.8-3,1.6-6,2.5-8.9C548.3,258.7,551.6,272.2,553,290.4L553,290.4z M2400.5,52c2.3,4.9,4.6,9.9,6.9,14.9c-1.9,1.4-3.6,2.8-5.3,4.3
- c-3-7.1-7.4-13.5-12.9-18.9C2392.8,52.2,2396.6,52,2400.5,52L2400.5,52z M621.7,341.7L621.7,341.7L621.7,341.7L621.7,341.7z
- M1095.3,1114.2L1095.3,1114.2L1095.3,1114.2z M1650.7,1280L1650.7,1280L1650.7,1280z M1876.3,851L1876.3,851L1876.3,851
- L1876.3,851z M529.1,418.4L529.1,418.4l-0.4-1.1L529.1,418.4L529.1,418.4z M2695.7,596.5l0.3,0.2L2695.7,596.5z M311.7,403.1
- c9.8-111,31.4-158.9,110.3-242.5C323,230.3,298.4,262,311.7,403.1"/>
- <path class="st3" d="M286.2,312.4c10.9-50,21-68.8,51.9-109.8C288.1,237.5,281.6,251.8,286.2,312.4 M1446.8-384.1
- c-59.3,14.3-70.6,25.2-88.3,83.3C1386.9-343.3,1403.2-357.1,1446.8-384.1"/>
- <path class="st3" d="M1540.3-392.5c-117.5,28.8-152.1,49.3-191.1,185.5C1398.8-306.8,1436.4-343.5,1540.3-392.5 M1793.5,104.1
- c12.5-55.5,34.8-109,121-150.4C1800.2-17.7,1778.8,30.3,1793.5,104.1 M2520.5,107.9c67.7-24.1,100.3-78.5,116.5-142.5
- c-26.5,53.6-67.4,98.5-122.9,126c-29.8,14.7-48.8,9.6-82.1,6.4C2465.8,107.6,2487.3,119.8,2520.5,107.9 M2059.5,162.3
- c-8.7-18.2-24.2-32.3-43.1-39.2c16.6-8.9,32.9-18.2,45.6-29.7c-37.3,17.2-80.6,13-112.6,34.6c-28.2,19-67,79.3-95.6,104.9
- c20.7-8,40.7-22,59.1-36.6c0.2,28.4,16.1,54.3,41.2,67.4c-10.6,13.9-19,29.2-25,45.6c54.5-64.6,133.5-113.3,207.8-134.2
- c-20.8-0.3-45.3,3.6-70.4,11.8C2065.6,178.4,2063.2,170.1,2059.5,162.3 M1981.1,650.2c-2.6,16.7-6.3,37.5-8.9,54.2
- c7.1-18.9,15.6-40.9,23.8-59c8.7-19.1,13.6-20.9,32.2-31c13.1-7.1,37-17,50.1-24.1c-13.5,2.3-37.7,7.2-51.2,9.5
- C1991,606,1986.7,614.7,1981.1,650.2 M1364.6,4.7c-41.9,41.4-82.6,183.5-95.6,240.4c20.5-47.2,71.7-179.3,111-212.9
- c10.9-9.3,18.4-15,26.6-19.1c-28.1,47.2-26.1,58.9-16.2,122.2c8.4-64.3,30.6-89.1,67.1-137.1c40-10,77.4-22.1,118.4-38
- c-46.2,5.2-92.4,10-138.7,14.4C1398.4-21.9,1392.1-22.5,1364.6,4.7"/>
- <path class="st1" d="M1935.3,246.6c-7.6-16-0.8-35.2,15.2-42.8c16.1-7.6,35.4-0.8,43,15.3c0.7,1.4,1.3,2.9,1.7,4.5
- c-15.3,11.4-29.3,24.7-41.1,40.2C1946.2,260.6,1939.2,254.8,1935.3,246.6 M2293,108.2c1.3-13.2,12.6-23,25.8-21.7
- c13.3,1.3,23,13.1,21.7,26.3c-0.3,2.7-1,5.4-2.2,7.9c-12.1,2.1-24.2,5.6-36.7,10.2C2296.4,125.6,2292.3,115.8,2293,108.2"/>
+ <path class="st0" d="M2188.8,414.9l-1.7,0.3l-1.5,0.7l-1.3,0.8l-1.2,1.5l-0.7,0.7l-0.7,0.2l-0.2-0.4l0.3-0.4l0.1-0.6l0.2,0l0.2,0.2
+ l-0.1-0.6l-0.3-0.2l0-0.2l-0.6,0.3l-0.5,0.6l-0.1,0.6l0.2,0.5l0.2,0.8l0.4,0.2l0.5,0l0.4-0.3l-0.3,1.5l0.3,1.6l-0.3,0.8l-1,1.1
+ l0.2,0.7l0.5,0.8l0.9,0.7l0.5,0.1l0.6,0l-0.3,1.4l1.3,0.5l1.6,0.2l0.5-0.4l0-1l0.6-1l0-0.8l1.5,0.1l1.3-0.1l-1.3,0.8l0.2,1l0.8,1.3
+ l0.8,0.4l0.7-0.3l0.3-0.5l1.4-1.1l0.3,0.2l2.2,0.1l0.4-0.4l0-0.6l-0.1-0.3l-0.1-1.7l-0.7-1.5l0.1-0.6l0.4,0.2l1.2,1.1l0.6,0
+ l0.7-0.3l0.7-0.5l0.3-1.1l1.9,0.1l1.2-0.5l1-0.9l0.7-1.3l0.2-1.5l-0.1-1.8l-0.4-1.6l-0.4-0.5l-0.5-0.2l-0.9,1l-0.8,0.3l-0.7-1.2
+ l-0.7-0.7l-0.4-0.2l-1.6-1.3l-1.3-0.7l-1.3-0.1l-1.5,0.2l-1.3,0.5l-0.9,0.7l-0.7,0.9l-0.7,0.2L2188.8,414.9"/>
+ <path class="st1" d="M2184,418.7c-1.4,1.7-1.1,3.7-0.7,5.6c-0.2-0.5-0.4-1.1-0.6-1.6l-0.2-1.5c0-0.5,0-1,0.1-1.5l0.6-1.4l0.9-1.3
+ l1.4-1.2l1.5-0.6l1.8-0.2l-1.7,1.9C2185.7,417.3,2184.9,417.6,2184,418.7"/>
+ <path class="st1" d="M2190.7,413.6c-1,1-1.5,1.7-2.2,2.8c-0.4,0.8-1,1.6-1.4,2.4c-0.2,0.4-0.3,0.7-0.3,1.2l-0.7-0.8
+ c0.1-0.3,0.2-0.7,0.3-1l1.1-2l2.4-2.4C2190.2,413.7,2190.4,413.7,2190.7,413.6 M2195.6,411.2c-0.8,0.3-2.1,0.4-2.2,1.3
+ c-0.1,0.6,0,1,0.4,1.7c-1-1-1.2-0.8-3.1-0.5l0.8-1.1l1.4-0.9l1.8-0.4L2195.6,411.2"/>
+ <path class="st2" d="M2197.8,423.5c0.3,0.2,0.3,0.3,0.2,0.4c0.2-0.1,0.4-0.2,0.6-0.2l0.4-0.5l0.3-0.8l-0.4-0.3l-1.7,0.2
+ c0,0.1-0.1,0.2-0.1,0.3c0,0.2,0,0.3,0,0.5c0.1,0.1,0.1,0.2,0.2,0.3c0.1,0,0.2,0.1,0.2,0.1C2197.6,423.5,2197.7,423.5,2197.8,423.5
+ M2197.6,420.6c-0.8,0.2-0.8,0.3-1.1,1.1C2196.8,421.3,2197.1,421,2197.6,420.6 M2203.2,414.4c-0.1,0.1-0.3,0.1-0.4,0.2
+ c-0.2,0.3-0.4,0.5-0.7,0.7c-0.2,0.1-0.3,0.2-0.5,0.2c-0.1,0-0.2,0-0.4,0.1c0.1,0,0.1,0,0.2,0h0.5l0.6-0.4l0.4-0.4L2203.2,414.4
+ M2189.8,416.3c-0.3,0.9-0.6,1.7-1.1,2.5c0.6-0.7,1-1.3,1.4-2.1c0.1-0.3,0.2-0.7,0.6-0.5c0,0.3,0.1,0.6,0.1,0.9
+ c0.2-1.5,0.8-2.2,2.2-2.8l-1.2,0.1l-1.1,0.2l-0.6,0.8L2189.8,416.3 M2192.5,416.2c0.3,1.4,0.7,2.8,0.9,4.2c0.1,0.9,0.1,1.4-0.3,2.2
+ c-0.5,0-0.8,0-1.3,0.2c-2,0.7-3.1,1.6-4.5-0.3l1.3,0.6c0.3-0.1,0.6-0.1,0.9-0.2c0.5-0.3,1.1-0.6,1.6-0.9l1.3-0.2l0.4-1.7l-0.3-2.3
+ c0-0.4,0-0.7,0-1.1C2192.5,416.6,2192.5,416.4,2192.5,416.2 M2196,425.1c-0.2,1.2,0.4,1.8,0.2,2.1c-0.1,0.1-0.2,0.2-0.3,0.3
+ c-0.4,0.2-0.8,0-0.9,0.1h-1.2l-0.5-0.2l0.7-0.8c0.2-0.5,0.5-1,0.7-1.5l0.4-1.5h0.2L2196,425.1"/>
+ <path class="st2" d="M2194,421.7c0.1,0.5,0.3,0.7,0.5,1.2c-0.2,0.8-0.4,1.8-0.7,2.6c-0.1,0.3-0.2,0.5-0.5,0.7
+ c-0.4,0.4-0.8,0.8-1.3,1.1c-0.3,0.3-0.6,0.1-1,0.1c-0.2,0.3-0.2,0.5-0.5,0.6c-0.5,0.2-0.9-0.3-1.3-0.6c0.3,0.4,0.5,0.9,0.8,1.3
+ c0.2,0.2,0.4,0.4,0.6,0.5l0.5,0.1l0.6-0.4c0.1-0.2,0.2-0.4,0.3-0.6c0.2-0.2,0.5-0.4,0.7-0.5c0.3-0.2,0.6-0.5,0.9-0.7l0.6-0.8
+ l0.5-0.9c0.2-0.6,0.4-1.3,0.6-1.9c0-0.2,0-0.5,0.1-0.7c-0.3-0.1-0.5-0.2-0.8-0.4C2194.4,422,2194.2,421.9,2194,421.7 M2187.6,425.4
+ c0.9,0,1.8-0.1,2.7-0.4c0.2-0.3,0.5-0.6,0.7-0.9c-0.3,0.5-0.3,0.8-0.4,1.3l-0.3,0.4c-0.7,0-1.4,0-2,0.1c-0.2,0-0.4,0-0.7-0.1
+ c0,0,0,0-0.1-0.1C2187.6,425.6,2187.6,425.5,2187.6,425.4 M2187.5,424.8l-0.1-0.6c-0.2,0.9-0.1,1.5-0.5,2.4
+ c-0.3,0.4-0.7,0.7-1.2,0.9c0,0.2,0,0.4,0,0.5c-0.1,0.6-1.3,0.3-1.8,0.3l2.4,0.6l0.5-0.2c0.1-0.3,0.1-0.7,0.2-1l0.5-0.9l0.1-0.6
+ L2187.5,424.8 M2186.2,419.6c0,0.4-0.1,0.6,0.1,1c0.3,0.5,0.6,1,0.8,1.5l0.1-1C2186.9,420.6,2186.5,420.1,2186.2,419.6 M2182.5,423
+ c-0.1,0.2-0.2,0.3-0.2,0.5c0.2,0.7,0.4,1.2,0.8,1.8c-0.1,0.3-0.1,0.4-0.3,0.6c-0.4-0.1-0.7-0.1-1-0.1c0.4,0.3,0.8,0.6,1.2,0.9
+ c0.2,0,0.4-0.1,0.6-0.1l0.6-0.6l-0.8-1.3C2183.1,424.1,2182.8,423.5,2182.5,423 M2203.2,414.2c0.2,1.1,0.6,2.1,0.5,3.2
+ c0,1.4-0.3,3.1-1.6,3.9c-1.4,0.9-3.1,0.5-4.6,0.1l1.9,0.8c0.6,0,1.2,0.1,1.8,0.1c0.4-0.1,0.8-0.2,1.2-0.4c0.3-0.3,0.6-0.5,0.9-0.8
+ l0.7-1.5l0.3-1.7c-0.1-0.6-0.1-1.1-0.2-1.7l-0.4-1.7C2203.5,414.4,2203.4,414.3,2203.2,414.2 M2182,417.4c-0.6,0.4-0.9,0.6-0.8,1.4
+ l0.2,0.7l0.3,0.2l0.3,0.1l0.6-0.1c0.1-0.3,0.2-0.6,0.3-1l-0.9,0.4h-0.2c-0.1-0.1-0.2-0.2-0.2-0.3l0.3-0.4l0.1-0.8
+ c0.1,0,0.1,0,0.2,0.1c0.1,0.1,0.2,0.1,0.2,0.2l0-0.4l-0.2-0.3c-0.1,0-0.1-0.1-0.2-0.1L2182,417.4 M2196.5,411.3
+ c0.6,0.5,1.3,1,1.7,1.6c0.2,0.3,0.4,0.4,0,0.7c0.4-0.1,0.5-0.1,0.9-0.1c0.6,0.1,1.1,0.9,1.2,1.5c0,0.1-0.2,0.2-0.6,0.3
+ c0,0-0.3,0-0.2,0c0,0.1,0.1,0.1,0.2,0.2c0,0.1,0,0.4,0.1,0.5c0.3,0,0.6,0,0.8,0.1c0.1,0.2,0.1,0.3,0.1,0.5l0.3-0.1
+ c0-0.2-0.1-0.5-0.1-0.7c0.1-0.2,0.2-0.3,0.3-0.5l-0.4-0.9c-0.3-0.2-0.5-0.5-0.8-0.7l-0.1,0c-0.3-0.2-0.6-0.4-0.9-0.5l-1.4-1.2
+ L2196.5,411.3 M2197.4,415.7c0,0.1-0.1,0.1-0.1,0.2c0.2,0.2,0.4,0.4,0.4,0.7c-0.3,0.1-0.5,0.3-0.8,0.4l-0.7,0.7
+ c-0.3-0.2-0.4-0.3-0.5-0.6c-0.2,0-0.3,0.1-0.5,0c0.1,0,0.1,0,0.2-0.1l0.4-0.5c0.3-0.2,0.5-0.4,0.8-0.6l0.5-0.2
+ C2197.2,415.8,2197.4,415.7,2197.4,415.7"/>
+ <path class="st2" d="M2198.2,416.5c-0.9,0.5-1.7,0.9-2.1,1.8C2196,417.2,2197.2,416.7,2198.2,416.5 M2195.9,414.3
+ c-0.6,0.4-1.1,1.3-1,2.2c-0.2-0.7-0.1-1.4,0.5-1.9c0.1-0.1,0.2-0.1,0.3-0.2C2195.7,414.3,2195.8,414.3,2195.9,414.3"/>
+ <path class="st3" d="M2204.4,416.3c-0.1-0.7-0.3-1.4-0.6-1.9c0-0.1-0.1-0.1-0.1-0.2c-0.1-0.1-0.3-0.3-0.5-0.3
+ c-0.2-0.1-0.4-0.1-0.6,0c0,0-0.1,0.1-0.1,0.1c-0.1,0.1-0.2,0.3-0.3,0.4c-0.1,0.2-0.2,0.3-0.3,0.4c-0.2,0.1-0.3,0.2-0.5,0.3
+ c-0.1-0.2-0.2-0.4-0.3-0.5c-0.1-0.2-0.3-0.4-0.4-0.6c-0.1-0.1-0.2-0.3-0.4-0.4c-0.1-0.1-0.3-0.2-0.4-0.3c-0.4-0.3-0.8-0.6-1.2-0.9
+ c-0.2-0.1-0.3-0.3-0.5-0.4c-0.9-0.7-1.7-1.1-2.6-1.1c-0.9-0.1-1.8,0.2-2.9,0.6c-0.5,0.2-0.9,0.5-1.2,0.8c-0.3,0.3-0.6,0.6-0.9,1
+ c-0.2,0-0.3,0-0.5,0.1c-0.2,0.1-0.4,0.2-0.6,0.4c-0.1,0.1-0.3,0.3-0.4,0.4c-0.1,0.1-0.3,0.3-0.4,0.4c-1,0.2-1.8,0.3-2.5,0.6
+ c-0.7,0.3-1.4,0.7-2,1.3c-0.3,0.2-0.5,0.5-0.7,0.8c-0.2,0.3-0.4,0.5-0.5,0.8c-0.1,0.1-0.3,0.3-0.4,0.4c-0.1,0.1-0.3,0.2-0.5,0.3
+ l0,0c-0.1,0-0.1,0.1-0.1,0.1c0,0,0,0,0,0c0.2-0.2,0.3-0.6,0.3-0.9c0,0,0.1,0.1,0.1,0.1c0,0,0.1,0.1,0.1,0.1l0.2,0.2l0.1-0.3
+ c0-0.2,0.1-0.5,0-0.8c0-0.2-0.1-0.3-0.2-0.4c0,0,0-0.1,0-0.1c0-0.1,0.1-0.2,0.1-0.3l0.1-0.2l-0.2,0c-0.3,0-0.9,0.4-1.3,0.8
+ c-0.2,0.2-0.3,0.3-0.4,0.5c-0.1,0.2-0.1,0.4-0.1,0.6c0,0.2,0.1,0.4,0.3,0.5c0,0.1,0.1,0.2,0.1,0.3c0,0.1,0.1,0.2,0.1,0.3
+ c0.1,0.3,0.3,0.4,0.5,0.5c0.2,0.1,0.4,0.1,0.6,0c0,0.2-0.1,0.5-0.1,0.7c0,0.3,0,0.7,0,1.1c0,0.1,0,0.2,0,0.3c0,0.1,0,0.2,0,0.3
+ c0,0.1-0.1,0.2-0.1,0.3l-0.2,0.5l-0.4,0.4c-0.1,0.1-0.2,0.2-0.4,0.4c0,0-0.1,0-0.1,0.1c-0.2,0.2-0.3,0.3-0.2,0.7
+ c0,0.3,0.1,0.5,0.3,0.7c0.1,0.2,0.3,0.4,0.5,0.6c0.3,0.3,0.7,0.6,1.1,0.7c0.2,0.1,0.5,0.1,0.7,0.1c0,0,0,0.1,0,0.1
+ c0,0.1-0.1,0.2-0.1,0.3c-0.3,0.6,0,1,0.5,1.2c0.2,0.1,0.5,0.2,0.8,0.2c0.1,0,0.1,0,0.2,0c0.3,0.1,0.8,0.2,1.3,0.3
+ c0.5,0,1-0.1,1.1-0.6c0.1-0.2,0.1-0.3,0.1-0.5c0-0.1,0-0.3,0-0.4c0.2-0.3,0.2-0.4,0.3-0.6c0,0,0-0.1,0.1-0.1
+ c0.1-0.2,0.2-0.3,0.2-0.4c0-0.1,0-0.3,0-0.5c0,0,0,0,0-0.1c0.3,0,0.6,0.1,0.9,0.1c0.2,0,0.3,0,0.5,0c0,0-0.1,0-0.1,0.1l-0.1,0
+ c-0.4,0.2-0.4,0.6-0.3,1c0.1,0.4,0.4,0.8,0.5,1c0.3,0.5,0.6,0.9,1,1.1c0.4,0.2,0.8,0.3,1.4,0c0.3-0.2,0.4-0.3,0.5-0.5
+ c0-0.1,0.1-0.1,0.1-0.2c0.1-0.1,0.4-0.3,0.7-0.6c0.1-0.1,0.2-0.2,0.3-0.3c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.3,0.1,0.5,0.1
+ c0.2,0,0.7,0,1,0c0.1,0,0.2,0,0.2,0c0.3,0,0.6,0,0.8-0.1c0.2-0.1,0.3-0.3,0.4-0.7c0-0.2,0-0.3,0-0.4c0-0.1-0.1-0.2-0.1-0.3
+ c0-0.2,0-0.3,0-0.5c0-0.2,0-0.4,0-0.5c0-0.2,0-0.4-0.1-0.6c0-0.2-0.1-0.3-0.2-0.5c-0.1-0.1-0.1-0.2-0.1-0.4l-0.1,0l0,0l0.1,0l0,0
+ c-0.1-0.2-0.1-0.4-0.2-0.6c0,0,0-0.1,0-0.1l0.2,0.2l0.3,0.3c0.2,0.2,0.4,0.4,0.6,0.5c0.2,0.1,0.5,0.2,0.8,0.2
+ c0.4,0,0.7-0.2,1.1-0.4c0.3-0.2,0.5-0.5,0.7-0.9l0.1-0.3l0.1-0.2c0.5,0.1,1,0.1,1.6,0.1c0.5-0.1,1-0.2,1.4-0.4
+ c0.6-0.3,1.1-0.8,1.4-1.4l0,0c0.4-0.6,0.6-1.4,0.7-2.2C2204.6,418,2204.6,417.1,2204.4,416.3L2204.4,416.3z M2197.9,421.5
+ c-0.3-0.1-0.5-0.2-0.7-0.4c0.1,0.3,0.1,0.6,0,1c-0.1,0.5-0.4,1.3,0.3,1.4c0.3,0.1,0.4,0,0.7-0.1c-0.3,0.1-0.4,0.1-0.6,0
+ c-0.2,0-0.3-0.1-0.3-0.3c0.1,0,0.2,0.1,0.3,0.1c0.5,0.1,1-0.1,1.1-0.5c0.1-0.2,0-0.3,0.2-0.6c0.1,0,0.2,0.1,0.3,0.1l-0.2,0.6
+ c-0.2,0.5-0.8,0.9-1.3,0.9c-0.5,0-0.8-0.3-1.2-0.6c-0.2-0.2-0.5-0.4-0.7-0.6c-0.6-0.2-1.1-0.4-1.7-0.9c0.4,0.5,0.7,0.8,1.3,1
+ c-0.1,0.9-0.4,1.5-0.6,2.3c-0.1,0.4-1,1.9-1.3,2c-0.2,0.1-1.3,1.1-1.5,1.2c-0.2,0.2-0.3,0.5-0.5,0.6c-0.7,0.4-1.2-0.4-1.6-1
+ c-0.2-0.3-0.7-1.1-0.2-1.3c0.4-0.2,0.6-0.4,1-0.6c0.1,0.1,0.2,0.2,0.2,0.3l0-0.4c0-0.2,0-0.4,0-0.6c0-0.2,0-0.4,0.1-0.6
+ c-0.1,0.2-0.2,0.4-0.2,0.7c0,0.1,0,0.2-0.1,0.2c-0.9,0.2-1.9,0.2-2.8,0c-0.1-0.3-0.1-0.7-0.2-1c0,0.3,0,1.1,0,1.5
+ c0,0.3,0,0.5-0.2,0.8c-0.2,0.3-0.2,0.3-0.5,0.8c0,0.3,0,0.5-0.1,0.8c-0.1,0.5-1.4,0.1-1.8,0c-0.4-0.1-1.3-0.3-1.1-0.9
+ c0.2-0.5,0.3-1,0.4-1.7c-0.8-1.1-1.5-2.7-1.6-4c-0.1-1.1,0-1.7,0.2-2.4c0.4-1,0.9-1.9,1.7-2.6c1.1-1,2.1-1.4,3.7-1.6
+ c-0.4,0.4-0.8,0.9-1.2,1.4c-0.4,0.5-0.7,1-0.9,1.5c-0.4,0.8-0.4,1,0.1,1.7c0.4,0.6,0.7,0.8,0.8,1.4c-0.2,0.3-0.2,0.6-0.3,1
+ c0.5,0.6,0.9,1,1.4,1.1c0.5,0.1,0.9,0.1,1.3-0.1c1-0.5,1.9-1.1,3-1.2c0.5-1.3,0.5-2.3,0.2-3.5c-0.2-0.8-0.2-1.6-0.3-2.5
+ c-0.2,0.9-0.2,1.6-0.1,2.5c0.2,1,0.3,2.2-0.2,3.1c-1,0.1-1.9,0.7-2.8,1.2c-0.4,0.2-0.7,0.2-1.1,0.1c-0.4-0.1-0.6-0.3-1-0.8
+ c0-0.5,0.1-0.7,0.3-1.1c0.3-0.7,0.7-1.3,1.1-2c-0.5,0.6-1,1.1-1.4,1.7c-0.2-0.4-0.4-0.7-0.7-1.1c-0.4-0.5-0.4-0.7-0.1-1.2
+ c0.3-0.6,0.5-1,0.9-1.5c0.8-0.8,1.5-1.8,2.4-2.6c0.5-0.5,0.7-0.4,1.3-0.5c0.6-0.1,1.1-0.2,1.7-0.3c-0.5,0.1-1.1,0.1-1.6,0.1h0
+ c0.5-0.7,0.8-1,1.7-1.4c2.1-0.9,3.4-1,5.1,0.4c0.4,0.4,0.8,0.7,1.2,1c-0.2,0-0.3,0-0.5,0.1c0.2,0,0.5,0,0.7,0
+ c0.1,0,0.1,0.1,0.2,0.1c0.3,0.2,0.5,0.3,0.7,0.6c0.2,0.3,0.4,0.6,0.6,0.9c-0.1,0-0.2-0.1-0.3-0.1c-0.2-0.1-0.4-0.1-0.6,0l0,0
+ c-0.2,0.1-0.4,0.2-0.6,0.2c0.1,0,0.3,0,0.4,0c0,0,0,0,0,0c0,0.1-0.1,0.2-0.1,0.2c0,0.1,0,0.2,0.1,0.3v0c0,0,0,0.1,0.1,0.1
+ c-0.1,0-0.2,0.1-0.2,0.1c0.4-0.1,0.7-0.1,1.1,0c0,0.1,0.1,0.2,0.1,0.4l-0.1,0c0,0,0,0,0,0c-0.2-0.1-0.4-0.1-0.7-0.1
+ c-0.8,0.2-0.6,0.7-1,1.4c0.4-0.5,0.4-1,1-1.2c0.2,0,0.3-0.1,0.4-0.1c-0.2,0.1-0.3,0.2-0.4,0.4c-0.2,0.5-0.1,0.9-0.3,1.4
+ c0.2-0.4,0.3-0.8,0.5-1.3c0.1-0.2,0.4-0.4,0.5-0.4l0.1,0c0,0.3,0.1,0.6,0.1,0.8c0,0.4-0.1,1-0.2,1.3c0.2-0.3,0.3-0.9,0.4-1.3
+ c0.1-0.4,0.1-1,0-1.4c-0.1-0.6,0.5-0.5,0.9-0.8c0.3-0.2,0.5-0.6,0.7-0.8c0.3-0.3,0.7,0.1,0.8,0.4c0.4,1.1,0.6,2.8,0.5,3.8
+ c-0.1,1.2-0.7,2.5-1.8,3.1C2200.9,422.5,2199.3,422,2197.9,421.5L2197.9,421.5z M2196,426.9c0,0.5-0.2,0.5-0.7,0.5
+ c-0.2,0-1,0-1.2,0c-0.3,0-0.4-0.1-0.5-0.1c0.4-0.3,1.2-1.7,1.4-2.2c0.2-0.5,0.3-0.9,0.5-1.4c0.1,0.2,0.1,0.4,0.2,0.6
+ c0.1,0.3,0.2,0.5,0.2,0.9l0,1.1C2196,426.6,2196,426.7,2196,426.9L2196,426.9z M2182.6,423.1c0.3,1,0.8,1.9,1.3,2.8v0
+ c0,0.1-0.1,0.3-0.2,0.4c-0.4,0.5-1.4-0.2-1.6-0.5c-0.3-0.3-0.5-0.7-0.6-1c0-0.3,0-0.3,0.2-0.4l0.7-0.7L2182.6,423.1L2182.6,423.1z
+ M2182,417c-0.1,0.2-0.1,0.3-0.2,0.4c-0.2,0.5,0.1,1-0.4,1.4c0.2,0.5,0.2,0.6,0.7,0.4c0.2-0.1,0.4-0.2,0.5-0.3
+ c-0.1,0.2-0.1,0.4-0.2,0.6c0,0,0,0.1,0,0.1c-0.4,0.2-0.9,0.3-1.1-0.1c-0.1-0.2-0.1-0.4-0.2-0.6C2180.6,418.1,2181.5,417.3,2182,417
+ L2182,417z M2182.3,417.6c-0.1-0.1-0.1-0.1-0.2-0.1c0-0.1,0-0.1,0-0.2c0,0,0-0.1,0-0.1C2182.3,417.3,2182.3,417.5,2182.3,417.6
+ L2182.3,417.6z M2200.8,415.2c0,0,0,0.1,0.1,0.1c0,0,0,0-0.1,0c0-0.1-0.1-0.1-0.1-0.2C2200.7,415.3,2200.8,415.2,2200.8,415.2
+ L2200.8,415.2z M2183,418.2L2183,418.2L2183,418.2L2183,418.2z M2187.7,425.9L2187.7,425.9L2187.7,425.9z M2193.3,427.6
+ L2193.3,427.6L2193.3,427.6z M2195.6,423.3L2195.6,423.3L2195.6,423.3L2195.6,423.3z M2182.1,418.9L2182.1,418.9L2182.1,418.9
+ L2182.1,418.9L2182.1,418.9z M2203.8,420.7L2203.8,420.7L2203.8,420.7z M2179.9,418.8c0.1-1.1,0.3-1.6,1.1-2.4
+ C2180,417,2179.8,417.4,2179.9,418.8"/>
+ <path class="st3" d="M2179.6,417.9c0.1-0.5,0.2-0.7,0.5-1.1C2179.7,417.1,2179.6,417.3,2179.6,417.9 M2191.3,410.9
+ c-0.6,0.1-0.7,0.3-0.9,0.8C2190.7,411.3,2190.8,411.2,2191.3,410.9"/>
+ <path class="st3" d="M2192.2,410.8c-1.2,0.3-1.5,0.5-1.9,1.9C2190.8,411.7,2191.2,411.3,2192.2,410.8 M2194.7,415.8
+ c0.1-0.6,0.3-1.1,1.2-1.5C2194.8,414.6,2194.6,415,2194.7,415.8 M2202,415.8c0.7-0.2,1-0.8,1.2-1.4c-0.3,0.5-0.7,1-1.2,1.3
+ c-0.3,0.1-0.5,0.1-0.8,0.1C2201.5,415.8,2201.7,415.9,2202,415.8 M2197.4,416.4c-0.1-0.2-0.2-0.3-0.4-0.4c0.2-0.1,0.3-0.2,0.5-0.3
+ c-0.4,0.2-0.8,0.1-1.1,0.3c-0.3,0.2-0.7,0.8-1,1.1c0.2-0.1,0.4-0.2,0.6-0.4c0,0.3,0.2,0.5,0.4,0.7c-0.1,0.1-0.2,0.3-0.3,0.5
+ c0.5-0.6,1.3-1.1,2.1-1.3c-0.2,0-0.5,0-0.7,0.1C2197.5,416.5,2197.4,416.4,2197.4,416.4 M2196.6,421.2c0,0.2-0.1,0.4-0.1,0.5
+ c0.1-0.2,0.2-0.4,0.2-0.6c0.1-0.2,0.1-0.2,0.3-0.3c0.1-0.1,0.4-0.2,0.5-0.2c-0.1,0-0.4,0.1-0.5,0.1
+ C2196.7,420.8,2196.7,420.9,2196.6,421.2 M2190.4,414.8c-0.4,0.4-0.8,1.8-1,2.4c0.2-0.5,0.7-1.8,1.1-2.1c0.1-0.1,0.2-0.2,0.3-0.2
+ c-0.3,0.5-0.3,0.6-0.2,1.2c0.1-0.6,0.3-0.9,0.7-1.4c0.4-0.1,0.8-0.2,1.2-0.4c-0.5,0.1-0.9,0.1-1.4,0.1
+ C2190.8,414.5,2190.7,414.5,2190.4,414.8"/>
+ <path class="st1" d="M2196.2,417.2c-0.1-0.2,0-0.4,0.2-0.4c0.2-0.1,0.4,0,0.4,0.2c0,0,0,0,0,0c-0.2,0.1-0.3,0.2-0.4,0.4
+ C2196.3,417.3,2196.2,417.3,2196.2,417.2 M2199.7,415.8c0-0.1,0.1-0.2,0.3-0.2c0.1,0,0.2,0.1,0.2,0.3c0,0,0,0.1,0,0.1
+ c-0.1,0-0.2,0.1-0.4,0.1C2199.8,416,2199.7,415.9,2199.7,415.8"/>
</g>
</svg>
diff --git a/components/datalake-handler/admin/src/src/assets/icons/kafka_able.svg b/components/datalake-handler/admin/src/src/assets/icons/kafka_able.svg
index a4b094de..98a333c9 100755
--- a/components/datalake-handler/admin/src/src/assets/icons/kafka_able.svg
+++ b/components/datalake-handler/admin/src/src/assets/icons/kafka_able.svg
@@ -1,21 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="圖層_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- viewBox="348 -952.7 1538 2500" style="enable-background:new 348 -952.7 1538 2500;" xml:space="preserve">
+ viewBox="1227.5 407.4 24.9 24.9" style="enable-background:new 1227.5 407.4 24.9 24.9;" xml:space="preserve">
<style type="text/css">
- .st2{fill:#5DBEBB;}
+ .st0{fill:#5DBEBB;}
</style>
-<path class="st2" d="M1560.5,430.7c-97.2,0-184.4,43.1-244.1,110.9l-153-108.3c16.2-44.7,25.6-92.7,25.6-143
- c0-49.4-9-96.6-24.7-140.6l152.6-107.1c59.7,67.5,146.6,110.3,243.6,110.3c179.5,0,325.5-146,325.5-325.5s-146-325.5-325.5-325.5
- s-325.5,146-325.5,325.5c0,32.1,4.9,63.1,13.6,92.5L1095.8,27.1C1032-52.1,940.1-107.3,835.4-124.2v-184.1
- c147.5-31,258.6-162,258.6-318.5c0-179.5-146-325.5-325.5-325.5s-325.5,146-325.5,325.5c0,154.4,108.2,283.8,252.7,317v186.5
- C498.5-88.7,348,83.4,348,290.4c0,208,151.9,380.7,350.6,414.2v196.9c-146,32.1-255.6,162.3-255.6,317.8
- c0,179.5,146,325.5,325.5,325.5s325.5-146,325.5-325.5c0-155.5-109.7-285.7-255.6-317.8V704.6c100.5-16.9,191.5-69.8,255.9-148.8
- l154,109c-8.5,29.1-13.3,59.8-13.3,91.6c0,179.5,146,325.5,325.5,325.5s325.5-146,325.5-325.5S1740,430.7,1560.5,430.7L1560.5,430.7
- z M1560.5-330.4c87,0,157.8,70.8,157.8,157.8s-70.8,157.8-157.8,157.8s-157.8-70.8-157.8-157.8S1473.4-330.4,1560.5-330.4
- L1560.5-330.4z M610.6-626.8c0-87,70.8-157.8,157.8-157.8s157.8,70.8,157.8,157.8S855.5-469,768.5-469S610.6-539.8,610.6-626.8
- L610.6-626.8z M926.3,1219.3c0,87-70.8,157.8-157.8,157.8s-157.8-70.8-157.8-157.8c0-87,70.8-157.8,157.8-157.8
- S926.3,1132.2,926.3,1219.3z M768.5,510.5c-121.4,0-220.1-98.7-220.1-220.1c0-121.4,98.8-220.1,220.1-220.1
- c121.4,0,220.1,98.8,220.1,220.1C988.6,411.8,889.8,510.5,768.5,510.5z M1560.5,914.1c-87,0-157.8-70.8-157.8-157.8
- s70.8-157.8,157.8-157.8s157.8,70.8,157.8,157.8S1647.5,914.1,1560.5,914.1z"/>
+<path class="st0" d="M1244.4,421.2c-1,0-1.8,0.4-2.4,1.1l-1.5-1.1c0.2-0.4,0.3-0.9,0.3-1.4c0-0.5-0.1-1-0.2-1.4l1.5-1.1
+ c0.6,0.7,1.5,1.1,2.4,1.1c1.8,0,3.3-1.5,3.3-3.3s-1.5-3.3-3.3-3.3c-1.8,0-3.3,1.5-3.3,3.3c0,0.3,0,0.6,0.1,0.9l-1.5,1.1
+ c-0.6-0.8-1.6-1.3-2.6-1.5v-1.8c1.5-0.3,2.6-1.6,2.6-3.2c0-1.8-1.5-3.3-3.3-3.3s-3.3,1.5-3.3,3.3c0,1.5,1.1,2.8,2.5,3.2v1.9
+ c-2,0.3-3.5,2.1-3.5,4.1c0,2.1,1.5,3.8,3.5,4.1v2c-1.5,0.3-2.6,1.6-2.6,3.2c0,1.8,1.5,3.3,3.3,3.3s3.3-1.5,3.3-3.3
+ c0-1.6-1.1-2.9-2.6-3.2v-2c1-0.2,1.9-0.7,2.6-1.5l1.5,1.1c-0.1,0.3-0.1,0.6-0.1,0.9c0,1.8,1.5,3.3,3.3,3.3c1.8,0,3.3-1.5,3.3-3.3
+ S1246.2,421.2,1244.4,421.2L1244.4,421.2z M1244.4,413.6c0.9,0,1.6,0.7,1.6,1.6s-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6
+ S1243.6,413.6,1244.4,413.6L1244.4,413.6z M1234.9,410.7c0-0.9,0.7-1.6,1.6-1.6c0.9,0,1.6,0.7,1.6,1.6c0,0.9-0.7,1.6-1.6,1.6
+ S1234.9,411.5,1234.9,410.7L1234.9,410.7z M1238.1,429.1c0,0.9-0.7,1.6-1.6,1.6s-1.6-0.7-1.6-1.6c0-0.9,0.7-1.6,1.6-1.6
+ S1238.1,428.2,1238.1,429.1z M1236.5,422c-1.2,0-2.2-1-2.2-2.2s1-2.2,2.2-2.2c1.2,0,2.2,1,2.2,2.2C1238.7,421,1237.7,422,1236.5,422
+ z M1244.4,426.1c-0.9,0-1.6-0.7-1.6-1.6c0-0.9,0.7-1.6,1.6-1.6c0.9,0,1.6,0.7,1.6,1.6C1246,425.4,1245.3,426.1,1244.4,426.1z"/>
</svg>
diff --git a/components/datalake-handler/admin/src/src/assets/icons/kafka_disable.svg b/components/datalake-handler/admin/src/src/assets/icons/kafka_disable.svg
index 61b558fa..60173a25 100755
--- a/components/datalake-handler/admin/src/src/assets/icons/kafka_disable.svg
+++ b/components/datalake-handler/admin/src/src/assets/icons/kafka_disable.svg
@@ -1,21 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="圖層_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- viewBox="348 -952.7 1538 2500" style="enable-background:new 348 -952.7 1538 2500;" xml:space="preserve">
+ viewBox="1227.5 407.4 24.9 24.9" style="enable-background:new 1227.5 407.4 24.9 24.9;" xml:space="preserve">
<style type="text/css">
- .st1{fill:#D2D3D5;}
+ .st0{fill:#D2D3D5;}
</style>
-<path class="st1" d="M1560.5,430.7c-97.2,0-184.4,43.1-244.1,110.9l-153-108.3c16.2-44.7,25.6-92.7,25.6-143
- c0-49.4-9-96.6-24.7-140.6l152.6-107.1c59.7,67.5,146.6,110.3,243.6,110.3c179.5,0,325.5-146,325.5-325.5s-146-325.5-325.5-325.5
- s-325.5,146-325.5,325.5c0,32.1,4.9,63.1,13.6,92.5L1095.8,27.1C1032-52.1,940.1-107.3,835.4-124.2v-184.1
- c147.5-31,258.6-162,258.6-318.5c0-179.5-146-325.5-325.5-325.5s-325.5,146-325.5,325.5c0,154.4,108.2,283.8,252.7,317v186.5
- C498.5-88.7,348,83.4,348,290.4c0,208,151.9,380.7,350.6,414.2v196.9c-146,32.1-255.6,162.3-255.6,317.8
- c0,179.5,146,325.5,325.5,325.5s325.5-146,325.5-325.5c0-155.5-109.7-285.7-255.6-317.8V704.6c100.5-16.9,191.5-69.8,255.9-148.8
- l154,109c-8.5,29.1-13.3,59.8-13.3,91.6c0,179.5,146,325.5,325.5,325.5s325.5-146,325.5-325.5S1740,430.7,1560.5,430.7L1560.5,430.7
- z M1560.5-330.4c87,0,157.8,70.8,157.8,157.8s-70.8,157.8-157.8,157.8s-157.8-70.8-157.8-157.8S1473.4-330.4,1560.5-330.4
- L1560.5-330.4z M610.6-626.8c0-87,70.8-157.8,157.8-157.8s157.8,70.8,157.8,157.8S855.5-469,768.5-469S610.6-539.8,610.6-626.8
- L610.6-626.8z M926.3,1219.3c0,87-70.8,157.8-157.8,157.8s-157.8-70.8-157.8-157.8c0-87,70.8-157.8,157.8-157.8
- S926.3,1132.2,926.3,1219.3z M768.5,510.5c-121.4,0-220.1-98.7-220.1-220.1c0-121.4,98.8-220.1,220.1-220.1
- c121.4,0,220.1,98.8,220.1,220.1C988.6,411.8,889.8,510.5,768.5,510.5z M1560.5,914.1c-87,0-157.8-70.8-157.8-157.8
- s70.8-157.8,157.8-157.8s157.8,70.8,157.8,157.8S1647.5,914.1,1560.5,914.1z"/>
+<path class="st0" d="M1244.4,421.2c-1,0-1.8,0.4-2.4,1.1l-1.5-1.1c0.2-0.4,0.3-0.9,0.3-1.4c0-0.5-0.1-1-0.2-1.4l1.5-1.1
+ c0.6,0.7,1.5,1.1,2.4,1.1c1.8,0,3.3-1.5,3.3-3.3s-1.5-3.3-3.3-3.3c-1.8,0-3.3,1.5-3.3,3.3c0,0.3,0,0.6,0.1,0.9l-1.5,1.1
+ c-0.6-0.8-1.6-1.3-2.6-1.5v-1.8c1.5-0.3,2.6-1.6,2.6-3.2c0-1.8-1.5-3.3-3.3-3.3s-3.3,1.5-3.3,3.3c0,1.5,1.1,2.8,2.5,3.2v1.9
+ c-2,0.3-3.5,2.1-3.5,4.1c0,2.1,1.5,3.8,3.5,4.1v2c-1.5,0.3-2.6,1.6-2.6,3.2c0,1.8,1.5,3.3,3.3,3.3s3.3-1.5,3.3-3.3
+ c0-1.6-1.1-2.9-2.6-3.2v-2c1-0.2,1.9-0.7,2.6-1.5l1.5,1.1c-0.1,0.3-0.1,0.6-0.1,0.9c0,1.8,1.5,3.3,3.3,3.3c1.8,0,3.3-1.5,3.3-3.3
+ S1246.2,421.2,1244.4,421.2L1244.4,421.2z M1244.4,413.6c0.9,0,1.6,0.7,1.6,1.6s-0.7,1.6-1.6,1.6c-0.9,0-1.6-0.7-1.6-1.6
+ S1243.6,413.6,1244.4,413.6L1244.4,413.6z M1234.9,410.7c0-0.9,0.7-1.6,1.6-1.6c0.9,0,1.6,0.7,1.6,1.6c0,0.9-0.7,1.6-1.6,1.6
+ S1234.9,411.5,1234.9,410.7L1234.9,410.7z M1238.1,429.1c0,0.9-0.7,1.6-1.6,1.6s-1.6-0.7-1.6-1.6c0-0.9,0.7-1.6,1.6-1.6
+ S1238.1,428.2,1238.1,429.1z M1236.5,422c-1.2,0-2.2-1-2.2-2.2s1-2.2,2.2-2.2c1.2,0,2.2,1,2.2,2.2C1238.7,421,1237.7,422,1236.5,422
+ z M1244.4,426.1c-0.9,0-1.6-0.7-1.6-1.6c0-0.9,0.7-1.6,1.6-1.6c0.9,0,1.6,0.7,1.6,1.6C1246,425.4,1245.3,426.1,1244.4,426.1z"/>
</svg>
diff --git a/components/datalake-handler/admin/src/src/assets/icons/kibana_able.svg b/components/datalake-handler/admin/src/src/assets/icons/kibana_able.svg
index 5a483202..0a4d7b74 100755
--- a/components/datalake-handler/admin/src/src/assets/icons/kibana_able.svg
+++ b/components/datalake-handler/admin/src/src/assets/icons/kibana_able.svg
@@ -1,15 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- viewBox="1722.5 -151.5 708.9 904.3" style="enable-background:new 1722.5 -151.5 708.9 904.3;" xml:space="preserve">
+ viewBox="398 407.3 24.9 24.9" style="enable-background:new 398 407.3 24.9 24.9;" xml:space="preserve">
<style type="text/css">
.st0{fill:#5DBEBB;}
.st1{fill:#37A595;}
.st2{fill:#19A2A2;}
</style>
-<path class="st0" d="M1760.3,189.5c114.1,0,221.9,29.7,315.6,79.7l334.4-401.6h-662.5v796.9v-475H1760.3L1760.3,189.5z"/>
-<path class="st0" d="M2075.9,269.2l-328.1,395.3V727h660.9C2371.2,530.1,2246.2,362.9,2075.9,269.2z"/>
-<path class="st1" d="M2075.9,269.2l-328.1,395.3V727h117.2l318.7-384.4c0,0-21.9-17.2-51.6-39.1
- C2110.2,287.9,2075.9,269.2,2075.9,269.2z"/>
-<path class="st2" d="M1760.3,189.5h-12.5v475l328.1-395.3C1982.1,219.2,1874.3,189.5,1760.3,189.5L1760.3,189.5z"/>
+<g>
+ <path class="st0" d="M401.2,416.6c3.3,0,6.4,0.9,9.2,2.3l9.7-11.7h-19.2v23.1v-13.8H401.2L401.2,416.6z"/>
+ <path class="st0" d="M410.4,418.9l-9.5,11.5v1.8H420C418.9,426.5,415.3,421.6,410.4,418.9z"/>
+ <path class="st1" d="M410.4,418.9l-9.5,11.5v1.8h3.4l9.3-11.2c0,0-0.6-0.5-1.5-1.1C411.4,419.5,410.4,418.9,410.4,418.9z"/>
+ <path class="st2" d="M401.2,416.6h-0.4v13.8l9.5-11.5C407.6,417.5,404.5,416.6,401.2,416.6L401.2,416.6z"/>
+</g>
</svg>
diff --git a/components/datalake-handler/admin/src/src/assets/icons/kibana_disable.svg b/components/datalake-handler/admin/src/src/assets/icons/kibana_disable.svg
index 1bd8e585..6ece16d0 100755
--- a/components/datalake-handler/admin/src/src/assets/icons/kibana_disable.svg
+++ b/components/datalake-handler/admin/src/src/assets/icons/kibana_disable.svg
@@ -1,15 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- viewBox="1722.5 -151.5 708.9 904.3" style="enable-background:new 1722.5 -151.5 708.9 904.3;" xml:space="preserve">
+ viewBox="398 407.3 24.9 24.9" style="enable-background:new 398 407.3 24.9 24.9;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D2D3D5;}
.st1{fill:#C2BFBF;}
.st2{fill:#C4C6C8;}
</style>
-<path class="st0" d="M1760.3,189.5c114.1,0,221.9,29.7,315.6,79.7l334.4-401.6h-662.5v796.9v-475H1760.3L1760.3,189.5z"/>
-<path class="st0" d="M2075.9,269.2l-328.1,395.3V727h660.9C2371.2,530.1,2246.2,362.9,2075.9,269.2z"/>
-<path class="st1" d="M2075.9,269.2l-328.1,395.3V727h117.2l318.7-384.4c0,0-21.9-17.2-51.6-39.1
- C2110.2,287.9,2075.9,269.2,2075.9,269.2z"/>
-<path class="st2" d="M1760.3,189.5h-12.5v475l328.1-395.3C1982.1,219.2,1874.3,189.5,1760.3,189.5L1760.3,189.5z"/>
+<g>
+ <path class="st0" d="M401.2,416.6c3.3,0,6.4,0.9,9.2,2.3l9.7-11.7h-19.2v23.1v-13.8H401.2L401.2,416.6z"/>
+ <path class="st0" d="M410.4,418.9l-9.5,11.5v1.8H420C418.9,426.5,415.3,421.6,410.4,418.9z"/>
+ <path class="st1" d="M410.4,418.9l-9.5,11.5v1.8h3.4l9.3-11.2c0,0-0.6-0.5-1.5-1.1C411.4,419.5,410.4,418.9,410.4,418.9z"/>
+ <path class="st2" d="M401.2,416.6h-0.4v13.8l9.5-11.5C407.6,417.5,404.5,416.6,401.2,416.6L401.2,416.6z"/>
+</g>
</svg>
diff --git a/components/datalake-handler/admin/src/src/assets/icons/mongoDB_able.svg b/components/datalake-handler/admin/src/src/assets/icons/mongoDB_able.svg
index 1feb0c6f..44165fe5 100755
--- a/components/datalake-handler/admin/src/src/assets/icons/mongoDB_able.svg
+++ b/components/datalake-handler/admin/src/src/assets/icons/mongoDB_able.svg
@@ -1,22 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="圖層_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- viewBox="-397.2 285.8 11.2 25" style="enable-background:new -397.2 285.8 11.2 25;" xml:space="preserve">
+ viewBox="-297.9 408.9 24.9 25" style="enable-background:new -297.9 408.9 24.9 25;" xml:space="preserve">
<style type="text/css">
.st0{fill:#19A2A2;}
.st1{fill:#5DBEBB;}
.st2{fill:#CEEBEA;}
</style>
<g transform="matrix(1.2754196 0 0 1.2754196 -16.030009 -21.83192)">
- <path class="st0" d="M-294.5,241.2c0.2,0.3,0.4,0.7,0.5,1c0.1,0.2,0.2,0.4,0.4,0.5c0.4,0.4,0.9,0.9,1.2,1.4
+ <path class="st0" d="M-211.2,337.9c0.2,0.3,0.4,0.7,0.5,1c0.1,0.2,0.2,0.4,0.4,0.5c0.4,0.4,0.9,0.9,1.2,1.4
c0.9,1.2,1.5,2.5,1.9,3.9c0.3,0.9,0.4,1.7,0.4,2.6c0,2.7-0.9,4.9-2.7,6.8c-0.3,0.3-0.6,0.6-1,0.8c-0.2,0-0.3-0.2-0.4-0.3
- c-0.2-0.2-0.2-0.5-0.3-0.8c-0.1-0.3-0.1-0.6-0.1-1c0,0,0-0.1,0-0.2C-294.4,256.1-294.6,241.3-294.5,241.2z"/>
- <path class="st1" d="M-294.5,241.2C-294.5,241.2-294.5,241.2-294.5,241.2c-0.1,0.2-0.2,0.4-0.3,0.6c-0.1,0.2-0.3,0.3-0.5,0.5
- c-0.9,0.8-1.7,1.8-2.3,2.9c-0.8,1.5-1.2,3.1-1.3,4.8c0,0.6,0.2,2.8,0.4,3.4c0.5,1.6,1.4,3,2.7,4.2c0.3,0.3,0.6,0.5,0.9,0.8
- c0.1,0,0.1-0.1,0.1-0.2c0-0.2,0.1-0.3,0.1-0.4c0.1-0.5,0.2-1.1,0.2-1.6C-294.4,256.2-294.4,241.3-294.5,241.2L-294.5,241.2z"/>
- <path class="st2" d="M-294,258.9c0-0.2,0.2-0.4,0.3-0.7c-0.1,0-0.2-0.2-0.3-0.3c-0.1-0.1-0.1-0.2-0.2-0.4c-0.2-0.4-0.2-0.9-0.2-1.4
- c0,0,0-0.1,0-0.2s0-0.1,0-0.2c0,0-0.1,0.4-0.1,0.5c0,0.5-0.1,1-0.2,1.4c0,0.2,0,0.4-0.2,0.5c0,0,0,0,0,0.1c0.2,0.5,0.2,1.1,0.3,1.7
- v0.2c0,0.3,0,0.2,0.2,0.3c0.1,0,0.2,0,0.3,0.1c0.1,0,0.1,0,0.1-0.1c0-0.1,0-0.2,0-0.4c0-0.3,0-0.7,0-1
- C-294,259.3-294,259.1-294,258.9z"/>
+ c-0.2-0.2-0.2-0.5-0.3-0.8c-0.1-0.3-0.1-0.6-0.1-1c0,0,0-0.1,0-0.2C-211.1,352.8-211.3,338-211.2,337.9z"/>
+ <path class="st1" d="M-211.2,337.9L-211.2,337.9c-0.1,0.2-0.2,0.4-0.3,0.6c-0.1,0.2-0.3,0.3-0.5,0.5c-0.9,0.8-1.7,1.8-2.3,2.9
+ c-0.8,1.5-1.2,3.1-1.3,4.8c0,0.6,0.2,2.8,0.4,3.4c0.5,1.6,1.4,3,2.7,4.2c0.3,0.3,0.6,0.5,0.9,0.8c0.1,0,0.1-0.1,0.1-0.2
+ c0-0.2,0.1-0.3,0.1-0.4c0.1-0.5,0.2-1.1,0.2-1.6C-211.1,352.9-211.1,338-211.2,337.9L-211.2,337.9z"/>
+ <path class="st2" d="M-210.7,355.6c0-0.2,0.2-0.4,0.3-0.7c-0.1,0-0.2-0.2-0.3-0.3c-0.1-0.1-0.1-0.2-0.2-0.4
+ c-0.2-0.4-0.2-0.9-0.2-1.4c0,0,0-0.1,0-0.2c0-0.1,0-0.1,0-0.2c0,0-0.1,0.4-0.1,0.5c0,0.5-0.1,1-0.2,1.4c0,0.2,0,0.4-0.2,0.5
+ c0,0,0,0,0,0.1c0.2,0.5,0.2,1.1,0.3,1.7v0.2c0,0.3,0,0.2,0.2,0.3c0.1,0,0.2,0,0.3,0.1c0.1,0,0.1,0,0.1-0.1s0-0.2,0-0.4
+ c0-0.3,0-0.7,0-1C-210.7,356-210.7,355.8-210.7,355.6z"/>
</g>
</svg>
diff --git a/components/datalake-handler/admin/src/src/assets/icons/mongoDB_disable.svg b/components/datalake-handler/admin/src/src/assets/icons/mongoDB_disable.svg
index 9d1d506d..a75f7ae2 100755
--- a/components/datalake-handler/admin/src/src/assets/icons/mongoDB_disable.svg
+++ b/components/datalake-handler/admin/src/src/assets/icons/mongoDB_disable.svg
@@ -1,22 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="圖層_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- viewBox="-397.2 285.8 11.2 25" style="enable-background:new -397.2 285.8 11.2 25;" xml:space="preserve">
+ viewBox="-297.9 408.9 24.9 25" style="enable-background:new -297.9 408.9 24.9 25;" xml:space="preserve">
<style type="text/css">
.st0{fill:#C4C6C8;}
.st1{fill:#D2D3D5;}
.st2{fill:#C2BFBF;}
</style>
<g transform="matrix(1.2754196 0 0 1.2754196 -16.030009 -21.83192)">
- <path class="st0" d="M-294.5,241.2c0.2,0.3,0.4,0.7,0.5,1c0.1,0.2,0.2,0.4,0.4,0.5c0.4,0.4,0.9,0.9,1.2,1.4
+ <path class="st0" d="M-211.2,337.9c0.2,0.3,0.4,0.7,0.5,1c0.1,0.2,0.2,0.4,0.4,0.5c0.4,0.4,0.9,0.9,1.2,1.4
c0.9,1.2,1.5,2.5,1.9,3.9c0.3,0.9,0.4,1.7,0.4,2.6c0,2.7-0.9,4.9-2.7,6.8c-0.3,0.3-0.6,0.6-1,0.8c-0.2,0-0.3-0.2-0.4-0.3
- c-0.2-0.2-0.2-0.5-0.3-0.8c-0.1-0.3-0.1-0.6-0.1-1c0,0,0-0.1,0-0.2C-294.4,256.1-294.6,241.3-294.5,241.2z"/>
- <path class="st1" d="M-294.5,241.2C-294.5,241.2-294.5,241.2-294.5,241.2c-0.1,0.2-0.2,0.4-0.3,0.6c-0.1,0.2-0.3,0.3-0.5,0.5
- c-0.9,0.8-1.7,1.8-2.3,2.9c-0.8,1.5-1.2,3.1-1.3,4.8c0,0.6,0.2,2.8,0.4,3.4c0.5,1.6,1.4,3,2.7,4.2c0.3,0.3,0.6,0.5,0.9,0.8
- c0.1,0,0.1-0.1,0.1-0.2c0-0.2,0.1-0.3,0.1-0.4c0.1-0.5,0.2-1.1,0.2-1.6C-294.4,256.2-294.4,241.3-294.5,241.2L-294.5,241.2z"/>
- <path class="st2" d="M-294,258.9c0-0.2,0.2-0.4,0.3-0.7c-0.1,0-0.2-0.2-0.3-0.3c-0.1-0.1-0.1-0.2-0.2-0.4c-0.2-0.4-0.2-0.9-0.2-1.4
- c0,0,0-0.1,0-0.2s0-0.1,0-0.2c0,0-0.1,0.4-0.1,0.5c0,0.5-0.1,1-0.2,1.4c0,0.2,0,0.4-0.2,0.5c0,0,0,0,0,0.1c0.2,0.5,0.2,1.1,0.3,1.7
- v0.2c0,0.3,0,0.2,0.2,0.3c0.1,0,0.2,0,0.3,0.1c0.1,0,0.1,0,0.1-0.1c0-0.1,0-0.2,0-0.4c0-0.3,0-0.7,0-1
- C-294,259.3-294,259.1-294,258.9z"/>
+ c-0.2-0.2-0.2-0.5-0.3-0.8c-0.1-0.3-0.1-0.6-0.1-1c0,0,0-0.1,0-0.2C-211.1,352.8-211.3,338-211.2,337.9z"/>
+ <path class="st1" d="M-211.2,337.9L-211.2,337.9c-0.1,0.2-0.2,0.4-0.3,0.6c-0.1,0.2-0.3,0.3-0.5,0.5c-0.9,0.8-1.7,1.8-2.3,2.9
+ c-0.8,1.5-1.2,3.1-1.3,4.8c0,0.6,0.2,2.8,0.4,3.4c0.5,1.6,1.4,3,2.7,4.2c0.3,0.3,0.6,0.5,0.9,0.8c0.1,0,0.1-0.1,0.1-0.2
+ c0-0.2,0.1-0.3,0.1-0.4c0.1-0.5,0.2-1.1,0.2-1.6C-211.1,352.9-211.1,338-211.2,337.9L-211.2,337.9z"/>
+ <path class="st2" d="M-210.7,355.6c0-0.2,0.2-0.4,0.3-0.7c-0.1,0-0.2-0.2-0.3-0.3c-0.1-0.1-0.1-0.2-0.2-0.4
+ c-0.2-0.4-0.2-0.9-0.2-1.4c0,0,0-0.1,0-0.2c0-0.1,0-0.1,0-0.2c0,0-0.1,0.4-0.1,0.5c0,0.5-0.1,1-0.2,1.4c0,0.2,0,0.4-0.2,0.5
+ c0,0,0,0,0,0.1c0.2,0.5,0.2,1.1,0.3,1.7v0.2c0,0.3,0,0.2,0.2,0.3c0.1,0,0.2,0,0.3,0.1c0.1,0,0.1,0,0.1-0.1s0-0.2,0-0.4
+ c0-0.3,0-0.7,0-1C-210.7,356-210.7,355.8-210.7,355.6z"/>
</g>
</svg>