diff --git a/ubuntu-bionic-18.04-cloudimg-console.log b/ubuntu-bionic-18.04-cloudimg-console.log
new file mode 100644
index 0000000000000000000000000000000000000000..185d9d43fa0e47d31b632f4999e099663a882cb2
--- /dev/null
+++ b/ubuntu-bionic-18.04-cloudimg-console.log
@@ -0,0 +1,611 @@
+[ 0.000000] Linux version 4.15.0-161-generic (buildd@lcy01-amd64-012) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #169-Ubuntu SMP Fri Oct 15 13:41:54 UTC 2021 (Ubuntu 4.15.0-161.169-generic 4.15.18)
+[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.15.0-161-generic root=UUID=b4821a18-e421-4128-97a6-636c3c3a9a1c ro console=tty1 console=ttyS0
+[ 0.000000] KERNEL supported cpus:
+[ 0.000000] Intel GenuineIntel
+[ 0.000000] AMD AuthenticAMD
+[ 0.000000] Centaur CentaurHauls
+[ 0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
+[ 0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
+[ 0.000000] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
+[ 0.000000] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256
+[ 0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
+[ 0.000000] e820: BIOS-provided physical RAM map:
+[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
+[ 0.000000] BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
+[ 0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
+[ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000007ffeffff] usable
+[ 0.000000] BIOS-e820: [mem 0x000000007fff0000-0x000000007fffffff] ACPI data
+[ 0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff] reserved
+[ 0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
+[ 0.000000] BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved
+[ 0.000000] NX (Execute Disable) protection: active
+[ 0.000000] SMBIOS 2.5 present.
+[ 0.000000] DMI: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
+[ 0.000000] Hypervisor detected: KVM
+[ 0.000000] e820: last_pfn = 0x7fff0 max_arch_pfn = 0x400000000
+[ 0.000000] MTRR: Disabled
+[ 0.000000] x86/PAT: MTRRs disabled, skipping PAT initialization too.
+[ 0.000000] CPU MTRRs all blank - virtualized system.
+[ 0.000000] x86/PAT: Configuration [0-7]: WB WT UC- UC WB WT UC- UC
+[ 0.000000] found SMP MP-table at [mem 0x0009fff0-0x0009ffff]
+[ 0.000000] Scanning 1 areas for low memory corruption
+[ 0.000000] RAMDISK: [mem 0x3581f000-0x36c06fff]
+[ 0.000000] ACPI: Early table checksum verification disabled
+[ 0.000000] ACPI: RSDP 0x00000000000E0000 000024 (v02 VBOX )
+[ 0.000000] ACPI: XSDT 0x000000007FFF0030 00003C (v01 VBOX VBOXXSDT 00000001 ASL 00000061)
+[ 0.000000] ACPI: FACP 0x000000007FFF00F0 0000F4 (v04 VBOX VBOXFACP 00000001 ASL 00000061)
+[ 0.000000] ACPI: DSDT 0x000000007FFF0470 002325 (v02 VBOX VBOXBIOS 00000002 INTL 20190509)
+[ 0.000000] ACPI: FACS 0x000000007FFF0200 000040
+[ 0.000000] ACPI: FACS 0x000000007FFF0200 000040
+[ 0.000000] ACPI: APIC 0x000000007FFF0240 00005C (v02 VBOX VBOXAPIC 00000001 ASL 00000061)
+[ 0.000000] ACPI: SSDT 0x000000007FFF02A0 0001CC (v01 VBOX VBOXCPUT 00000002 INTL 20190509)
+[ 0.000000] ACPI: Reserving FACP table memory at [mem 0x7fff00f0-0x7fff01e3]
+[ 0.000000] ACPI: Reserving DSDT table memory at [mem 0x7fff0470-0x7fff2794]
+[ 0.000000] ACPI: Reserving FACS table memory at [mem 0x7fff0200-0x7fff023f]
+[ 0.000000] ACPI: Reserving FACS table memory at [mem 0x7fff0200-0x7fff023f]
+[ 0.000000] ACPI: Reserving APIC table memory at [mem 0x7fff0240-0x7fff029b]
+[ 0.000000] ACPI: Reserving SSDT table memory at [mem 0x7fff02a0-0x7fff046b]
+[ 0.000000] No NUMA configuration found
+[ 0.000000] Faking a node at [mem 0x0000000000000000-0x000000007ffeffff]
+[ 0.000000] NODE_DATA(0) allocated [mem 0x7ffc5000-0x7ffeffff]
+[ 0.000000] kvm-clock: cpu 0, msr 0:7ff44001, primary cpu clock
+[ 0.000000] kvm-clock: Using msrs 4b564d01 and 4b564d00
+[ 0.000000] kvm-clock: using sched offset of 3630853417 cycles
+[ 0.000000] clocksource: kvm-clock: mask: 0xffffffffffffffff max_cycles: 0x1cd42e4dffb, max_idle_ns: 881590591483 ns
+[ 0.000000] Zone ranges:
+[ 0.000000] DMA [mem 0x0000000000001000-0x0000000000ffffff]
+[ 0.000000] DMA32 [mem 0x0000000001000000-0x000000007ffeffff]
+[ 0.000000] Normal empty
+[ 0.000000] Device empty
+[ 0.000000] Movable zone start for each node
+[ 0.000000] Early memory node ranges
+[ 0.000000] node 0: [mem 0x0000000000001000-0x000000000009efff]
+[ 0.000000] node 0: [mem 0x0000000000100000-0x000000007ffeffff]
+[ 0.000000] Reserved but unavailable: 104 pages
+[ 0.000000] Initmem setup node 0 [mem 0x0000000000001000-0x000000007ffeffff]
+[ 0.000000] ACPI: PM-Timer IO Port: 0x4008
+[ 0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-23
+[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
+[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 low level)
+[ 0.000000] Using ACPI (MADT) for SMP configuration information
+[ 0.000000] smpboot: Allowing 2 CPUs, 0 hotplug CPUs
+[ 0.000000] PM: Registered nosave memory: [mem 0x00000000-0x00000fff]
+[ 0.000000] PM: Registered nosave memory: [mem 0x0009f000-0x0009ffff]
+[ 0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000effff]
+[ 0.000000] PM: Registered nosave memory: [mem 0x000f0000-0x000fffff]
+[ 0.000000] e820: [mem 0x80000000-0xfebfffff] available for PCI devices
+[ 0.000000] Booting paravirtualized kernel on KVM
+[ 0.000000] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645519600211568 ns
+[ 0.000000] random: get_random_bytes called from start_kernel+0x99/0x500 with crng_init=0
+[ 0.000000] setup_percpu: NR_CPUS:8192 nr_cpumask_bits:2 nr_cpu_ids:2 nr_node_ids:1
+[ 0.000000] percpu: Embedded 45 pages/cpu s147456 r8192 d28672 u1048576
+[ 0.000000] PV qspinlock hash table entries: 256 (order: 0, 4096 bytes)
+[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 515961
+[ 0.000000] Policy zone: DMA32
+[ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.15.0-161-generic root=UUID=b4821a18-e421-4128-97a6-636c3c3a9a1c ro console=tty1 console=ttyS0
+[ 0.000000] Memory: 2014044K/2096696K available (12300K kernel code, 2483K rwdata, 4320K rodata, 2448K init, 2724K bss, 82652K reserved, 0K cma-reserved)
+[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
+[ 0.000000] Kernel/User page tables isolation: enabled
+[ 0.000000] ftrace: allocating 39475 entries in 155 pages
+[ 0.004000] Hierarchical RCU implementation.
+[ 0.004000] RCU restricting CPUs from NR_CPUS=8192 to nr_cpu_ids=2.
+[ 0.004000] Tasks RCU enabled.
+[ 0.004000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
+[ 0.004000] NR_IRQS: 524544, nr_irqs: 440, preallocated irqs: 16
+[ 0.004000] Console: colour VGA+ 80x25
+[ 0.004000] console [tty1] enabled
+[ 0.004000] console [ttyS0] enabled
+[ 0.004000] ACPI: Core revision 20170831
+[ 0.004000] ACPI: 2 ACPI AML tables successfully acquired and loaded
+[ 0.004000] APIC: Switch to symmetric I/O mode setup
+[ 0.004000] x2apic enabled
+[ 0.004000] Switched APIC routing to physical x2apic.
+[ 0.004000] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
+[ 0.004004] tsc: Detected 2596.188 MHz processor
+[ 0.004783] Calibrating delay loop (skipped) preset value.. 5192.37 BogoMIPS (lpj=10384752)
+[ 0.005383] pid_max: default: 32768 minimum: 301
+[ 0.006319] Security Framework initialized
+[ 0.008006] Yama: becoming mindful.
+[ 0.008697] AppArmor: AppArmor initialized
+[ 0.010323] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes)
+[ 0.012701] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes)
+[ 0.014002] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes)
+[ 0.015490] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes)
+[ 0.016310] Last level iTLB entries: 4KB 1024, 2MB 1024, 4MB 1024
+[ 0.017299] Last level dTLB entries: 4KB 1024, 2MB 1024, 4MB 1024, 1GB 4
+[ 0.018393] Spectre V1 : Mitigation: usercopy/swapgs barriers and __user pointer sanitization
+[ 0.020004] Spectre V2 : Mitigation: Full generic retpoline
+[ 0.020967] Spectre V2 : Spectre v2 / SpectreRSB mitigation: Filling RSB on context switch
+[ 0.022294] Speculative Store Bypass: Vulnerable
+[ 0.023108] SRBDS: Unknown: Dependent on hypervisor status
+[ 0.024003] MDS: Mitigation: Clear CPU buffers
+[ 0.024930] Freeing SMP alternatives memory: 36K
+[ 0.136755] smpboot: CPU0: Intel(R) Core(TM) i7-4510U CPU @ 2.00GHz (family: 0x6, model: 0x45, stepping: 0x1)
+[ 0.138642] Performance Events: unsupported p6 CPU model 69 no PMU driver, software events only.
+[ 0.140000] Hierarchical SRCU implementation.
+[ 0.140763] NMI watchdog: Perf event create on CPU 0 failed with -2
+[ 0.141831] NMI watchdog: Perf NMI watchdog permanently disabled
+[ 0.142867] smp: Bringing up secondary CPUs ...
+[ 0.143723] x86: Booting SMP configuration:
+[ 0.144004] .... node #0, CPUs: #1
+[ 0.004000] kvm-clock: cpu 1, msr 0:7ff44041, secondary cpu clock
+[ 0.148024] smp: Brought up 1 node, 2 CPUs
+[ 0.148750] smpboot: Max logical packages: 1
+[ 0.149691] smpboot: Total of 2 processors activated (10384.75 BogoMIPS)
+[ 0.152203] devtmpfs: initialized
+[ 0.152819] x86/mm: Memory block size: 128MB
+[ 0.153793] evm: security.selinux
+[ 0.154431] evm: security.SMACK64
+[ 0.155022] evm: security.SMACK64EXEC
+[ 0.156005] evm: security.SMACK64TRANSMUTE
+[ 0.156696] evm: security.SMACK64MMAP
+[ 0.157383] evm: security.apparmor
+[ 0.157989] evm: security.ima
+[ 0.158512] evm: security.capability
+[ 0.159180] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
+[ 0.160024] futex hash table entries: 512 (order: 3, 32768 bytes)
+[ 0.162001] pinctrl core: initialized pinctrl subsystem
+[ 0.164127] RTC time: 19:16:48, date: 11/03/21
+[ 0.165080] NET: Registered protocol family 16
+[ 0.165920] audit: initializing netlink subsys (disabled)
+[ 0.166841] audit: type=2000 audit(1635967014.381:1): state=initialized audit_enabled=0 res=1
+[ 0.168040] cpuidle: using governor ladder
+[ 0.168730] cpuidle: using governor menu
+[ 0.169464] ACPI: bus type PCI registered
+[ 0.170165] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
+[ 0.172101] PCI: Using configuration type 1 for base access
+[ 0.173081] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
+[ 0.176085] ACPI: Added _OSI(Module Device)
+[ 0.176868] ACPI: Added _OSI(Processor Device)
+[ 0.177630] ACPI: Added _OSI(3.0 _SCP Extensions)
+[ 0.178436] ACPI: Added _OSI(Processor Aggregator Device)
+[ 0.180007] ACPI: Added _OSI(Linux-Dell-Video)
+[ 0.180750] ACPI: Added _OSI(Linux-Lenovo-NV-HDMI-Audio)
+[ 0.181665] ACPI: Added _OSI(Linux-HPI-Hybrid-Graphics)
+[ 0.182778] ACPI: Executed 1 blocks of module-level executable AML code
+[ 0.187390] ACPI: Interpreter enabled
+[ 0.188016] ACPI: (supports S0 S5)
+[ 0.188711] ACPI: Using IOAPIC for interrupt routing
+[ 0.189824] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
+[ 0.192226] ACPI: Enabled 2 GPEs in block 00 to 07
+[ 0.200150] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
+[ 0.201286] acpi PNP0A03:00: _OSC: OS supports [ASPM ClockPM Segments MSI]
+[ 0.202916] acpi PNP0A03:00: _OSC: not requesting OS control; OS requires [ExtendedConfig ASPM ClockPM MSI]
+[ 0.204016] acpi PNP0A03:00: fail to add MMCONFIG information, can't access extended PCI configuration space under this bridge.
+[ 0.206270] PCI host bridge to bus 0000:00
+[ 0.207003] pci_bus 0000:00: root bus resource [io 0x0000-0x0cf7 window]
+[ 0.208005] pci_bus 0000:00: root bus resource [io 0x0d00-0xffff window]
+[ 0.209120] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window]
+[ 0.211049] pci_bus 0000:00: root bus resource [mem 0x80000000-0xfdffffff window]
+[ 0.212007] pci_bus 0000:00: root bus resource [bus 00-ff]
+[ 0.216045] pci 0000:00:01.1: legacy IDE quirk: reg 0x10: [io 0x01f0-0x01f7]
+[ 0.217279] pci 0000:00:01.1: legacy IDE quirk: reg 0x14: [io 0x03f6]
+[ 0.218361] pci 0000:00:01.1: legacy IDE quirk: reg 0x18: [io 0x0170-0x0177]
+[ 0.219510] pci 0000:00:01.1: legacy IDE quirk: reg 0x1c: [io 0x0376]
+[ 0.250742] pci 0000:00:07.0: quirk: [io 0x4000-0x403f] claimed by PIIX4 ACPI
+[ 0.252016] pci 0000:00:07.0: quirk: [io 0x4100-0x410f] claimed by PIIX4 SMB
+[ 0.265697] ACPI: PCI Interrupt Link [LNKA] (IRQs 5 9 10 *11)
+[ 0.267100] ACPI: PCI Interrupt Link [LNKB] (IRQs 5 9 *10 11)
+[ 0.268121] ACPI: PCI Interrupt Link [LNKC] (IRQs 5 *9 10 11)
+[ 0.269202] ACPI: PCI Interrupt Link [LNKD] (IRQs 5 9 10 *11)
+[ 0.270560] SCSI subsystem initialized
+[ 0.271283] pci 0000:00:02.0: vgaarb: setting as boot VGA device
+[ 0.271283] pci 0000:00:02.0: vgaarb: VGA device added: decodes=io+mem,owns=io+mem,locks=none
+[ 0.272016] pci 0000:00:02.0: vgaarb: bridge control possible
+[ 0.273033] vgaarb: loaded
+[ 0.273656] ACPI: bus type USB registered
+[ 0.276039] usbcore: registered new interface driver usbfs
+[ 0.277051] usbcore: registered new interface driver hub
+[ 0.277967] usbcore: registered new device driver usb
+[ 0.279068] EDAC MC: Ver: 3.0.0
+[ 0.280234] PCI: Using ACPI for IRQ routing
+[ 0.281020] NetLabel: Initializing
+[ 0.281728] NetLabel: domain hash size = 128
+[ 0.282488] NetLabel: protocols = UNLABELED CIPSOv4 CALIPSO
+[ 0.284021] NetLabel: unlabeled traffic allowed by default
+[ 0.284994] clocksource: Switched to clocksource kvm-clock
+[ 0.296017] VFS: Disk quotas dquot_6.6.0
+[ 0.296856] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
+[ 0.298063] AppArmor: AppArmor Filesystem Enabled
+[ 0.299017] pnp: PnP ACPI init
+[ 0.300661] pnp: PnP ACPI: found 3 devices
+[ 0.310893] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
+[ 0.313561] NET: Registered protocol family 2
+[ 0.314645] IP idents hash table entries: 32768 (order: 6, 262144 bytes)
+[ 0.316750] TCP established hash table entries: 16384 (order: 5, 131072 bytes)
+[ 0.318527] TCP bind hash table entries: 16384 (order: 6, 262144 bytes)
+[ 0.320829] TCP: Hash tables configured (established 16384 bind 16384)
+[ 0.322347] UDP hash table entries: 1024 (order: 3, 32768 bytes)
+[ 0.323701] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes)
+[ 0.325189] NET: Registered protocol family 1
+[ 0.326204] pci 0000:00:00.0: Limiting direct PCI/PCI transfers
+[ 0.327496] pci 0000:00:01.0: Activating ISA DMA hang workarounds
+[ 0.329185] pci 0000:00:02.0: Video device with shadowed ROM at [mem 0x000c0000-0x000dffff]
+[ 0.331174] Unpacking initramfs...
+[ 0.600761] Freeing initrd memory: 20384K
+[ 0.601888] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x256c2b17ef9, max_idle_ns: 440795271172 ns
+[ 0.604163] platform rtc_cmos: registered platform RTC device (no PNP device found)
+[ 0.605913] Scanning for low memory corruption every 60 seconds
+[ 0.608181] Initialise system trusted keyrings
+[ 0.608975] Key type blacklist registered
+[ 0.609756] workingset: timestamp_bits=36 max_order=19 bucket_order=0
+[ 0.612094] zbud: loaded
+[ 0.613145] squashfs: version 4.0 (2009/01/31) Phillip Lougher
+[ 0.614408] fuse init (API version 7.26)
+[ 0.617719] Key type asymmetric registered
+[ 0.618713] Asymmetric key parser 'x509' registered
+[ 0.619866] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
+[ 0.621647] io scheduler noop registered
+[ 0.622579] io scheduler deadline registered
+[ 0.623604] io scheduler cfq registered (default)
+[ 0.625085] ACPI: AC Adapter [AC] (on-line)
+[ 0.626137] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input0
+[ 0.628033] ACPI: Power Button [PWRF]
+[ 0.628998] input: Sleep Button as /devices/LNXSYSTM:00/LNXSLPBN:00/input/input1
+[ 0.630662] ACPI: Sleep Button [SLPF]
+[ 0.633892] ACPI: Battery Slot [BAT0] (battery present)
+[ 0.635580] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
+[ 0.658226] 00:02: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
+[ 0.667283] Linux agpgart interface v0.103
+[ 0.671226] loop: module loaded
+[ 0.672614] scsi host0: ata_piix
+[ 0.673635] scsi host1: ata_piix
+[ 0.674426] ata1: PATA max UDMA/33 cmd 0x1f0 ctl 0x3f6 bmdma 0xd000 irq 14
+[ 0.675913] ata2: PATA max UDMA/33 cmd 0x170 ctl 0x376 bmdma 0xd008 irq 15
+[ 0.678120] libphy: Fixed MDIO Bus: probed
+[ 0.679365] tun: Universal TUN/TAP device driver, 1.6
+[ 0.681012] PPP generic driver version 2.4.2
+[ 0.682193] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
+[ 0.684016] ehci-pci: EHCI PCI platform driver
+[ 0.685307] ehci-platform: EHCI generic platform driver
+[ 0.686808] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
+[ 0.688465] ohci-pci: OHCI PCI platform driver
+[ 0.689814] ohci-platform: OHCI generic platform driver
+[ 0.691735] uhci_hcd: USB Universal Host Controller Interface driver
+[ 0.694058] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f03:PS2M] at 0x60,0x64 irq 1,12
+[ 0.696785] serio: i8042 KBD port at 0x60,0x64 irq 1
+[ 0.698156] serio: i8042 AUX port at 0x60,0x64 irq 12
+[ 0.699752] mousedev: PS/2 mouse device common for all mice
+[ 0.701589] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input2
+[ 0.704048] rtc_cmos rtc_cmos: rtc core: registered rtc_cmos as rtc0
+[ 0.705782] rtc_cmos rtc_cmos: alarms up to one day, 114 bytes nvram
+[ 0.707503] i2c /dev entries driver
+[ 0.708574] device-mapper: uevent: version 1.0.3
+[ 0.709874] device-mapper: ioctl: 4.37.0-ioctl (2017-09-20) initialised: dm-devel@redhat.com
+[ 0.712549] ledtrig-cpu: registered to indicate activity on CPUs
+[ 0.714406] NET: Registered protocol family 10
+[ 0.720693] Segment Routing with IPv6
+[ 0.721717] NET: Registered protocol family 17
+[ 0.722889] Key type dns_resolver registered
+[ 0.724524] mce: Using 0 MCE banks
+[ 0.725508] RAS: Correctable Errors collector initialized.
+[ 0.726990] sched_clock: Marking stable (724476675, 0)->(894611429, -170134754)
+[ 0.729649] registered taskstats version 1
+[ 0.730874] Loading compiled-in X.509 certificates
+[ 0.736305] Loaded X.509 cert 'Build time autogenerated kernel key: 1542c441293f32312405dc023a70312e7f0d3f0a'
+[ 0.739184] Loaded X.509 cert 'Canonical Ltd. Live Patch Signing: 14df34d1a87cf37625abec039ef2bf521249b969'
+[ 0.742446] Loaded X.509 cert 'Canonical Ltd. Kernel Module Signing: 88f752e560a1e0737e31163a466ad7b70a850c19'
+[ 0.745030] zswap: loaded using pool lzo/zbud
+[ 0.752375] Key type big_key registered
+[ 0.753148] Key type trusted registered
+[ 0.756153] Key type encrypted registered
+[ 0.757121] AppArmor: AppArmor sha1 policy hashing enabled
+[ 0.758361] ima: No TPM chip found, activating TPM-bypass! (rc=-19)
+[ 0.759770] ima: Allocated hash algorithm: sha1
+[ 0.761739] evm: HMAC attrs: 0x1
+[ 0.762921] Magic number: 13:989:292
+[ 0.764092] tty tty25: hash matches
+[ 0.765179] rtc_cmos rtc_cmos: setting system clock to 2021-11-03 19:16:49 UTC (1635967009)
+[ 0.767358] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found
+[ 0.768735] EDD information not available.
+[ 0.868669] Freeing unused kernel image memory: 2448K
+[ 1.144954] Write protecting the kernel read-only data: 20480k
+[ 1.151329] Freeing unused kernel image memory: 2008K
+[ 1.154942] Freeing unused kernel image memory: 1824K
+[ 1.165470] x86/mm: Checked W+X mappings: passed, no W+X pages found.
+[ 1.166598] x86/mm: Checking user space page tables
+[ 1.174652] x86/mm: Checked W+X mappings: passed, no W+X pages found.
+Loading, please wait...
+starting version 237
+[ 1.244278] e1000: Intel(R) PRO/1000 Network Driver - version 7.3.21-k8-NAPI
+[ 1.246023] e1000: Copyright (c) 1999-2006 Intel Corporation.
+[ 1.250501] Fusion MPT base driver 3.04.20
+[ 1.252906] Copyright (c) 1999-2008 LSI Corporation
+[ 1.265972] Fusion MPT SPI Host driver 3.04.20
+[ 1.286949] AVX2 version of gcm_enc/dec engaged.
+[ 1.288268] AES CTR mode by8 optimization enabled
+[ 1.469408] input: ImExPS/2 Generic Explorer Mouse as /devices/platform/i8042/serio1/input/input4
+[ 1.652804] e1000 0000:00:03.0 eth0: (PCI:33MHz:32-bit) 02:2f:77:f1:0c:e0
+[ 1.654908] e1000 0000:00:03.0 eth0: Intel(R) PRO/1000 Network Connection
+[ 1.657770] mptbase: ioc0: Initiating bringup
+[ 1.658236] e1000 0000:00:03.0 enp0s3: renamed from eth0
+[ 2.328849] ioc0: LSI53C1030 A0: Capabilities={Initiator}
+[ 4.625219] scsi host2: ioc0: LSI53C1030 A0, FwRev=00000000h, Ports=1, MaxQ=256, IRQ=20
+[ 7.077502] scsi 2:0:0:0: Direct-Access VBOX HARDDISK 1.0 PQ: 0 ANSI: 5
+[ 7.192234] scsi target2:0:0: Beginning Domain Validation
+[ 7.198705] scsi target2:0:0: Domain Validation skipping write tests
+[ 7.200274] scsi target2:0:0: Ending Domain Validation
+[ 7.201391] scsi target2:0:0: asynchronous
+[ 7.202833] scsi 2:0:1:0: Direct-Access VBOX HARDDISK 1.0 PQ: 0 ANSI: 5
+[ 8.147448] scsi target2:0:1: Beginning Domain Validation
+[ 8.154133] random: fast init done
+[ 8.157163] scsi target2:0:1: Domain Validation skipping write tests
+[ 8.158958] scsi target2:0:1: Ending Domain Validation
+[ 8.160131] scsi target2:0:1: asynchronous
+[ 8.164298] random: systemd-udevd: uninitialized urandom read (16 bytes read)
+[ 8.165818] random: systemd-udevd: uninitialized urandom read (16 bytes read)
+[ 8.168254] random: systemd-udevd: uninitialized urandom read (16 bytes read)
+[ 8.170293] sd 2:0:0:0: Attached scsi generic sg0 type 0
+[ 8.171572] sd 2:0:0:0: [sda] 83886080 512-byte logical blocks: (42.9 GB/40.0 GiB)
+[ 8.173546] sd 2:0:0:0: [sda] Write Protect is off
+[ 8.175532] sd 2:0:1:0: Attached scsi generic sg1 type 0
+[ 8.177049] sd 2:0:0:0: [sda] Incomplete mode parameter data
+[ 8.177051] sd 2:0:0:0: [sda] Assuming drive cache: write through
+[ 8.178247] sd 2:0:1:0: [sdb] 20480 512-byte logical blocks: (10.5 MB/10.0 MiB)
+[ 8.183981] sd 2:0:1:0: [sdb] Write Protect is off
+[ 8.186014] sd 2:0:1:0: [sdb] Incomplete mode parameter data
+[ 8.187523] sd 2:0:1:0: [sdb] Assuming drive cache: write through
+[ 8.189890] sda: sda1
+[ 8.191385] sd 2:0:0:0: [sda] Attached SCSI disk
+[ 8.193881] sd 2:0:1:0: [sdb] Attached SCSI disk
+Begin: Loading essential drivers ... [ 9.675988] raid6: sse2x1 gen() 12018 MB/s
+[ 9.730388] raid6: sse2x1 xor() 8077 MB/s
+[ 9.776855] raid6: sse2x2 gen() 12098 MB/s
+[ 9.824013] raid6: sse2x2 xor() 7684 MB/s
+[ 9.884066] raid6: sse2x4 gen() 17129 MB/s
+[ 9.939891] raid6: sse2x4 xor() 10260 MB/s
+[ 9.995963] raid6: avx2x1 gen() 23309 MB/s
+[ 10.051851] raid6: avx2x1 xor() 15215 MB/s
+[ 10.109797] raid6: avx2x2 gen() 26903 MB/s
+[ 10.164008] raid6: avx2x2 xor() 16227 MB/s
+[ 10.215847] raid6: avx2x4 gen() 28083 MB/s
+[ 10.264356] raid6: avx2x4 xor() 16052 MB/s
+[ 10.265393] raid6: using algorithm avx2x4 gen() 28083 MB/s
+[ 10.266503] raid6: .... xor() 16052 MB/s, rmw enabled
+[ 10.267678] raid6: using avx2x2 recovery algorithm
+[ 10.270850] xor: automatically using best checksumming function avx
+[ 10.273861] async_tx: api initialized (async)
+done.
+Begin: Running /scripts/init-premount ... done.
+Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
+Begin: Running /scripts/local-premount ... [ 10.328739] Btrfs loaded, crc32c=crc32c-intel
+Scanning for Btrfs filesystems
+done.
+Begin: Will now check root file system ... fsck from util-linux 2.31.1
+[/sbin/fsck.ext4 (1) -- /dev/sda1] fsck.ext4 -a -C0 /dev/sda1
+cloudimg-rootfs: clean, 232179/5120000 files, 1100707/10485499 blocks
+done.
+[ 10.387851] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
+done.
+Begin: Running /scripts/local-bottom ... done.
+Begin: Running /scripts/init-bottom ... done.
+[ 10.606451] ip_tables: (C) 2000-2006 Netfilter Core Team
+[ 10.623601] systemd[1]: systemd 237 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid)
+[ 10.628658] systemd[1]: Detected virtualization oracle.
+[ 10.629873] systemd[1]: Detected architecture x86-64.
+
+Welcome to [1mUbuntu 18.04.6 LTS[0m!
+
+[ 10.637465] systemd[1]: Set hostname to <ubuntu-bionic>.
+[ 10.967584] systemd[1]: Reached target System Time Synchronized.
+[[0;32m OK [0m] Reached target System Time Synchronized.
+[ 10.972210] systemd[1]: Created slice User and Session Slice.
+[[0;32m OK [0m] Created slice User and Session Slice.
+[ 10.975444] systemd[1]: Created slice System Slice.
+[[0;32m OK [0m] Created slice System Slice.
+[ 11.076720] systemd[1]: Reached target Slices.
+[[0;32m OK [0m] Reached target Slices.
+[ 11.079281] systemd[1]: Listening on udev Control Socket.
+[[0;32m OK [0m] Listening on udev Control Socket.
+[ 11.190117] systemd[1]: Listening on LVM2 poll daemon socket.
+[[0;32m OK [0m] Listening on LVM2 poll daemon socket.
+[[0;32m OK [0m] Listening on LVM2 metadata daemon socket.
+[[0;32m OK [0m] Listening on Journal Socket (/dev/log).
+[[0;32m OK [0m] Created slice system-serial\x2dgetty.slice.
+[[0;32m OK [0m] Listening on Journal Audit Socket.
+[[0;32m OK [0m] Listening on Journal Socket.
+ Starting Set the console keyboard layout...
+ Starting Create list of required st…ce nodes for the current kernel...
+ Starting Uncomplicated firewall...
+ Starting Load Kernel Modules...
+ Mounting POSIX Message Queue File System...
+ Mounting Huge Pages File System...
+[[0;32m OK [0m] Listening on Device-mapper event daemon FIFOs.
+ Starting Monitoring of LVM2 mirrors…ng dmeventd or progress polling...
+[[0;32m OK [0m] Listening on Network Service Netlink Socket.
+[[0;32m OK [0m] Listening on Syslog Socket.
+ Starting Journal Service...
+[[0;32m OK [0m] Set up automount Arbitrary Executab…rmats File System Automount Point.
+ Mounting Kernel Debug File System...
+[[0;32m OK [0m] Listening on fsck to fsckd communication Socket.
+ Starting Remount Root and Kernel File Systems...
+[[0;32m OK [0m] Listening on /dev/initctl Compatibility Named Pipe.
+[[0;32m OK [0m] Reached target User and Group Name Lookups.
+[[0;32m OK [0m] Listening on udev Kernel Socket.
+ Starting udev Coldplug all Devices...
+[[0;32m OK [0m] Reached target Swap.
+[ 12.179575] Loading iSCSI transport class v2.0-870.
+[ 12.187768] iscsi: registered transport (tcp)
+[[0;32m OK [0m] Started Forward Password Requests to Wall Directory Watch.
+[[0;32m OK [0m] Started Create list of required sta…vice nodes for the current kernel.
+[[0;32m OK [0m] Mounted POSIX Message Queue File System.
+[[0;32m OK [0m] Mounted Huge Pages File System.
+[[0;32m OK [0m] Mounted Kernel Debug File System.
+[[0;32m OK [0m] Started LVM2 metadata daemon.
+ Starting Create Static Device Nodes in /dev...
+[[0;32m OK [0m] Started Journal Service.
+[ 12.236264] EXT4-fs (sda1): re-mounted. Opts: (null)
+[[0;32m OK [0m] Started Remount Root and Kernel File Systems.
+ Starting Flush Journal to Persistent Storage...
+ Starting Load/Save Random Seed...
+[[0;32m OK [0m] Started Set the console keyboard layout.
+[[0;32m OK [0m] Started udev Coldplug all Devices.
+[[0;32m OK [0m] Started Create Static Device Nodes in /dev.
+ Starting udev Kernel Device Manager...
+[[0;32m OK [0m] Started Monitoring of LVM2 mirrors,…sing dmeventd or progress polling.
+[[0;32m OK [0m] Reached target Local File Systems (Pre).
+[[0;32m OK [0m] Reached target Local File Systems.
+ Starting Tell Plymouth To Write Out Runtime Data...
+ Starting ebtables ruleset management...
+[ 12.312415] nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
+ Starting AppArmor initialization...
+ Starting Set console font and keymap...
+[ 12.323998] systemd-journald[430]: Received request to flush runtime journal from PID 1
+[[0;32m OK [0m] Started Load/Save Random Seed.
+[[0;32m OK [0m] Started udev Kernel Device Manager.
+[[0;32m OK [0m] Started Dispatch Password Requests to Console Directory Watch.
+[[0;32m OK [0m] Reached target Local Encrypted Volumes.
+[[0;32m OK [0m] Started Tell Plymouth To Write Out Runtime Data.
+[[0;32m OK [0m] Started Set console font and keymap.
+[ 12.438745] iscsi: registered transport (iser)
+[[0;32m OK [0m] Started Load Kernel Modules.
+ Starting Apply Kernel Variables...
+ Mounting FUSE Control File System...
+ Mounting Kernel Configuration File System...
+[[0;32m OK [0m] Mounted FUSE Control File System.
+[[0;32m OK [0m] Mounted Kernel Configuration File System.
+[[0;32m OK [0m] Started Apply Kernel Variables.
+[[0;32m OK [0m] Started Flush Journal to Persistent Storage.
+ Starting Create Volatile Files and Directories...
+[[0;32m OK [0m] Started Create Volatile Files and Directories.
+ Starting Update UTMP about System Boot/Shutdown...
+[[0;32m OK [0m] Found device /dev/ttyS0.
+[[0;32m OK [0m] Started ebtables ruleset management.
+[[0;32m OK [0m] Started Update UTMP about System Boot/Shutdown.
+[[0;32m OK [0m] Listening on Load/Save RF Kill Switch Status /dev/rfkill Watch.
+[[0;32m OK [0m] Started AppArmor initialization.
+ Starting Initial cloud-init job (pre-networking)...
+ Starting Load AppArmor profiles managed internally by snapd...
+[[0;32m OK [0m] Started Load AppArmor profiles managed internally by snapd.
+[[0;32m OK [0m] Started Uncomplicated firewall.
+[ 14.369168] cloud-init[592]: Cloud-init v. 21.3-1-g6803368d-0ubuntu1~18.04.4 running 'init-local' at Wed, 03 Nov 2021 19:17:02 +0000. Up 14.16 seconds.
+[[0;32m OK [0m] Started Initial cloud-init job (pre-networking).
+[[0;32m OK [0m] Reached target Network (Pre).
+ Starting Network Service...
+[[0;32m OK [0m] Started Network Service.
+ Starting Wait for Network to be Configured...
+ Starting Network Name Resolution...
+[[0;32m OK [0m] Started Network Name Resolution.
+[[0;32m OK [0m] Reached target Network.
+[[0;32m OK [0m] Reached target Host and Network Name Lookups.
+[[0;32m OK [0m] Started Wait for Network to be Configured.
+ Starting Initial cloud-init job (metadata service crawler)...
+[ 16.962371] cloud-init[760]: Cloud-init v. 21.3-1-g6803368d-0ubuntu1~18.04.4 running 'init' at Wed, 03 Nov 2021 19:17:05 +0000. Up 16.83 seconds.
+[ 16.964443] cloud-init[760]: ci-info: +++++++++++++++++++++++++++++++++++++Net device info++++++++++++++++++++++++++++++++++++++
+[ 16.966192] cloud-init[760]: ci-info: +--------+------+---------------------------+---------------+--------+-------------------+
+[ 16.967962] cloud-init[760]: ci-info: | Device | Up | Address | Mask | Scope | Hw-Address |
+[ 16.970529] cloud-init[760]: ci-info: +--------+------+---------------------------+---------------+--------+-------------------+
+[ 16.972116] cloud-init[760]: ci-info: | enp0s3 | True | 10.0.2.15 | 255.255.255.0 | global | 02:2f:77:f1:0c:e0 |
+[ 16.973862] cloud-init[760]: ci-info: | enp0s3 | True | fe80::2f:77ff:fef1:ce0/64 | . | link | 02:2f:77:f1:0c:e0 |
+[ 16.975633] cloud-init[760]: ci-info: | lo | True | 127.0.0.1 | 255.0.0.0 | host | . |
+[ 16.977581] cloud-init[760]: ci-info: | lo | True | ::1/128 | . | host | . |
+[ 16.979311] cloud-init[760]: ci-info: +--------+------+---------------------------+---------------+--------+-------------------+
+[ 16.981078] cloud-init[760]: ci-info: ++++++++++++++++++++++++++++Route IPv4 info+++++++++++++++++++++++++++++
+[ 16.982645] cloud-init[760]: ci-info: +-------+-------------+----------+-----------------+-----------+-------+
+[ 16.984232] cloud-init[760]: ci-info: | Route | Destination | Gateway | Genmask | Interface | Flags |
+[ 16.985872] cloud-init[760]: ci-info: +-------+-------------+----------+-----------------+-----------+-------+
+[ 16.987222] cloud-init[760]: ci-info: | 0 | 0.0.0.0 | 10.0.2.2 | 0.0.0.0 | enp0s3 | UG |
+[ 16.989240] cloud-init[760]: ci-info: | 1 | 10.0.2.0 | 0.0.0.0 | 255.255.255.0 | enp0s3 | U |
+[ 17.000279] cloud-init[760]: ci-info: | 2 | 10.0.2.2 | 0.0.0.0 | 255.255.255.255 | enp0s3 | UH |
+[ 17.001761] cloud-init[760]: ci-info: +-------+-------------+----------+-----------------+-----------+-------+
+[ 17.003750] cloud-init[760]: ci-info: +++++++++++++++++++Route IPv6 info+++++++++++++++++++
+[ 17.016354] cloud-init[760]: ci-info: +-------+-------------+---------+-----------+-------+
+[ 17.017647] cloud-init[760]: ci-info: | Route | Destination | Gateway | Interface | Flags |
+[ 17.018900] cloud-init[760]: ci-info: +-------+-------------+---------+-----------+-------+
+[ 17.020015] cloud-init[760]: ci-info: | 1 | fe80::/64 | :: | enp0s3 | U |
+[ 17.021372] cloud-init[760]: ci-info: | 3 | local | :: | enp0s3 | U |
+[ 17.022595] cloud-init[760]: ci-info: | 4 | ff00::/8 | :: | enp0s3 | U |
+[ 17.023700] cloud-init[760]: ci-info: +-------+-------------+---------+-----------+-------+
+[[0;32m OK [0m] Started Initial cloud-init job (metadata service crawler).
+[[0;32m OK [0m] Reached target System Initialization.
+[[0;32m OK [0m] Started Ubuntu Advantage Timer for running repeated jobs.
+ Starting LXD - unix socket.
+[[0;32m OK [0m] Started Discard unused blocks once a week.
+ Starting Socket activation for snappy daemon.
+[[0;32m OK [0m] Listening on UUID daemon activation socket.
+[[0;32m OK [0m] Started Daily apt download activities.
+[[0;32m OK [0m] Listening on Open-iSCSI iscsid Socket.
+[[0;32m OK [0m] Started Message of the Day.
+[[0;32m OK [0m] Started Daily Cleanup of Temporary Directories.
+[[0;32m OK [0m] Started ACPI Events Check.
+[[0;32m OK [0m] Listening on cloud-init hotplug hook socket.
+[[0;32m OK [0m] Started Trigger to poll for Ubuntu …(Only enabled on GCP LTS non-pro).
+[[0;32m OK [0m] Reached target Paths.
+[[0;32m OK [0m] Listening on D-Bus System Message Bus Socket.
+[[0;32m OK [0m] Started Daily apt upgrade and clean activities.
+[[0;32m OK [0m] Reached target Timers.
+[[0;32m OK [0m] Listening on ACPID Listen Socket.
+[[0;32m OK [0m] Reached target Network is Online.
+[[0;32m OK [0m] Reached target Remote File Systems (Pre).
+[[0;32m OK [0m] Reached target Remote File Systems.
+ Starting Availability of block devices...
+[[0;32m OK [0m] Reached target Cloud-config availability.
+[[0;32m OK [0m] Listening on LXD - unix socket.
+[[0;32m OK [0m] Listening on Socket activation for snappy daemon.
+[[0;32m OK [0m] Reached target Sockets.
+[[0;32m OK [0m] Reached target Basic System.
+ Starting System Logging Service...
+[[0;32m OK [0m] Started D-Bus System Message Bus.
+ Starting LSB: automatic crash report generation...
+ Starting Login Service...
+ Starting OpenBSD Secure Shell server...
+[[0;32m OK [0m] Started FUSE filesystem for LXC.
+ Starting LSB: Record successful boot for GRUB...
+ Starting Permit User Sessions...
+ Starting Accounts Service...
+ Starting Virtualbox guest utils...
+[[0;32m OK [0m] Started Regular background program processing daemon.
+ Starting LXD - container startup/shutdown...
+[[0;32m OK [0m] Started Deferred execution scheduler.
+[[0;32m OK [0m] Started irqbalance daemon.
+ Starting The Apache HTTP Server...
+ Starting Dispatcher daemon for systemd-networkd...
+ Starting Snap Daemon...
+[[0;32m OK [0m] Started System Logging Service.
+[[0;32m OK [0m] Started Availability of block devices.
+[[0;32m OK [0m] Started Permit User Sessions.
+[[0;32m OK [0m] Started Login Service.
+[[0;32m OK [0m] Started OpenBSD Secure Shell server.
+ Starting Authorization Manager...
+[[0;32m OK [0m] Started Unattended Upgrades Shutdown.
+ Starting Hold until boot process finishes up...
+ Starting Terminate Plymouth Boot Screen...
+[[0;32m OK [0m] Started Hold until boot process finishes up.
+[[0;32m OK [0m] Started Serial Getty on ttyS0.
+ Starting Set console scheme...
+[[0;32m OK [0m] Started Terminate Plymouth Boot Screen.
+[[0;32m OK [0m] Started Set console scheme.
+[[0;32m OK [0m] Created slice system-getty.slice.
+[[0;32m OK [0m] Started Getty on tty1.
+[[0;32m OK [0m] Reached target Login Prompts.
+[[0;32m OK [0m] Started LSB: Record successful boot for GRUB.
+[[0;32m OK [0m] Started LSB: automatic crash report generation.
+[[0;32m OK [0m] Started Authorization Manager.
+[[0;32m OK [0m] Started Accounts Service.
+[[0;32m OK [0m] Started Virtualbox guest utils.
+[[0;32m OK [0m] Started LXD - container startup/shutdown.
+[[0;32m OK [0m] Started The Apache HTTP Server.
+[[0;32m OK [0m] Started Dispatcher daemon for systemd-networkd.
+[[0;32m OK [0m] Started Snap Daemon.
+ Starting Wait until snapd is fully seeded...
+[[0;32m OK [0m] Started Wait until snapd is fully seeded.
+ Starting Apply the settings specified in cloud-config...
+[[0;32m OK [0m] Reached target Multi-User System.
+[[0;32m OK [0m] Reached target Graphical Interface.
+ Starting Update UTMP about System Runlevel Changes...
+[[0;32m OK [0m] Started Update UTMP about System Runlevel Changes.
+[[0;32m OK [0m] Created slice User Slice of vagrant.
+ Starting User Manager for UID 1000...
+[[0;32m OK [0m] Started Session 1 of user vagrant.
+[[0;32m OK [0m] Started User Manager for UID 1000.
+[ 19.364369] cloud-init[1285]: Cloud-init v. 21.3-1-g6803368d-0ubuntu1~18.04.4 running 'modules:config' at Wed, 03 Nov 2021 19:17:07 +0000. Up 19.16 seconds.
+[[0;32m OK [0m] Started Apply the settings specified in cloud-config.
+ Starting Execute cloud user/final scripts...
+[ 20.047162] cloud-init[1366]: Cloud-init v. 21.3-1-g6803368d-0ubuntu1~18.04.4 running 'modules:final' at Wed, 03 Nov 2021 19:17:08 +0000. Up 19.92 seconds.
+[ 20.049622] cloud-init[1366]: Cloud-init v. 21.3-1-g6803368d-0ubuntu1~18.04.4 finished at Wed, 03 Nov 2021 19:17:08 +0000. Datasource DataSourceNoCloud [seed=/dev/sdb][dsmode=net]. Up 20.03 seconds
+[[0;32m OK [0m] Started Execute cloud user/final scripts.
+[[0;32m OK [0m] Reached target Cloud-init target.
+
+Ubuntu 18.04.6 LTS ubuntu-bionic ttyS0
+
+ubuntu-bionic login:
\ No newline at end of file
diff --git a/www/i18n/locale-en-GB.json b/www/i18n/locale-en-GB.json
index e9ddd3a84dea60b2b2d74721028d3332360ed07a..b617c340a1bf35d6d401d8158626fd1946863580 100644
--- a/www/i18n/locale-en-GB.json
+++ b/www/i18n/locale-en-GB.json
@@ -565,6 +565,24 @@
"SELECT_WALLET_MODAL": {
"TITLE": "Wallet selection"
},
+ "CERTIFICATION_MODAL": {
+ "CHECKLIST_TITLE": "Certification check list",
+ "INFOS": "Each member is responsible for the security of Ğ1 currency. Before certifying this person's identity, you should have performed few checks. Please answer following questions:",
+ "BTN_ALL_CHECK": "Certify",
+ "CHECKLIST_CONDITIONS_NOT_MET": "Certification has not been sent. All answers are not right. Please double-check each point with the person you want to certify.",
+ "QUESTIONS": {
+ "WELL_KNOWN": "Do you know <b>well</b> the person you are about to certify? Do you know other people who also know thes person well?",
+ "REVOCATION": "Has this person downloaded their <b>revocation document</b> and do they know where to find it?",
+ "CONTACT": "Have you <b>had contact</b> with this person by many means, and did they answer?",
+ "DOUBLE_IDENTITY": "The person should own <b>only one active member identity</b>. Do you think they own another one?",
+ "MASTER_ACCOUNT": "Does this person own their accounts secrets? Have they already <b>sent money from their account</b> at least once?",
+ "LICENSE": "Has this person <b>understood the Duniter license</b>? Do they agree to comply with it for future certifications?",
+ "CREDENTIALS": "Was the account created with <b>long and complex ID/Password</b> (ex. passphrases) ? Did the person understand that both ID and password must remain secret ? Are they <b>sure to remember them</b> or to be able to find them?",
+ "PUBLIC_KEY_DIFFERENT": "The <b>public key</b> that is shown must be <b>identical</b> to the one the person gave you. The public keys are they <b>different</b> ?"
+ },
+ "REMINDER_TITLE": "Reminder",
+ "SHORT_LICENSE_REMINDER": "<p>You may remind the person to certify different certification parameters:</p><p>- Each member can certify 100 other identities at most.</p><p>- The certifications are saved with a 5 days interval.</p><p>- A new identity must gather at least 5 certifications in less than 2 months.</p><p>- A member must renew its membership at least once a year.</p><p>- Certifications have a lifespan of two years.</p>"
+ },
"WALLET_LIST": {
"TITLE": "My wallets",
"BTN_NEW": "Add a wallet",
diff --git a/www/i18n/locale-en.json b/www/i18n/locale-en.json
index 8e328acf2bd937d49e138a4bf18e1a28ac240c4e..e927c4d38e107f37c0862a0caec56c80b6560efe 100644
--- a/www/i18n/locale-en.json
+++ b/www/i18n/locale-en.json
@@ -565,6 +565,24 @@
"SELECT_WALLET_MODAL": {
"TITLE": "Wallet selection"
},
+ "CERTIFICATION_MODAL": {
+ "CHECKLIST_TITLE": "Certification check list",
+ "INFOS": "Each member is responsible for the security of Ğ1 currency. Before certifying this person's identity, you should have performed few checks. Please answer following questions:",
+ "BTN_ALL_CHECK": "Certify",
+ "CHECKLIST_CONDITIONS_NOT_MET": "Certification has not been sent. All answers are not right. Please double-check each point with the person you want to certify.",
+ "QUESTIONS": {
+ "WELL_KNOWN": "Do you know <b>well</b> the person you are about to certify? Do you know other people who also know thes person well?",
+ "REVOCATION": "Has this person downloaded their <b>revocation document</b> and do they know where to find it?",
+ "CONTACT": "Have you <b>had contact</b> with this person by many means, and did they answer?",
+ "DOUBLE_IDENTITY": "The person should own <b>only one active member identity</b>. Do you think they own another one?",
+ "MASTER_ACCOUNT": "Does this person own their accounts secrets? Have they already <b>sent money from their account</b> at least once?",
+ "LICENSE": "Has this person <b>understood the Duniter license</b>? Do they agree to comply with it for future certifications?",
+ "CREDENTIALS": "Was the account created with <b>long and complex ID/Password</b> (ex. passphrases) ? Did the person understand that both ID and password must remain secret ? Are they <b>sure to remember them</b> or to be able to find them?",
+ "PUBLIC_KEY_DIFFERENT": "The <b>public key</b> that is shown must be <b>identical</b> to the one the person gave you. The public keys are they <b>different</b> ?"
+ },
+ "REMINDER_TITLE": "Reminder",
+ "SHORT_LICENSE_REMINDER": "<p>You may remind the person to certify different certification parameters:</p><p>- Each member can certify 100 other identities at most.</p><p>- The certifications are saved with a 5 days interval.</p><p>- A new identity must gather at least 5 certifications in less than 2 months.</p><p>- A member must renew its membership at least once a year.</p><p>- Certifications have a lifespan of two years.</p>"
+ },
"WALLET_LIST": {
"TITLE": "My wallets",
"BTN_NEW": "Add a wallet",
diff --git a/www/i18n/locale-fr-FR.json b/www/i18n/locale-fr-FR.json
index 8622064c4589fffe14d56ca9d8c5243757c5bc7f..b0a88d90324ea77bcd70f6b0a89decc357f5f107 100644
--- a/www/i18n/locale-fr-FR.json
+++ b/www/i18n/locale-fr-FR.json
@@ -565,6 +565,24 @@
"SELECT_WALLET_MODAL": {
"TITLE": "Sélection du portefeuille"
},
+ "CERTIFICATION_MODAL": {
+ "CHECKLIST_TITLE": "Vérifications avant certification",
+ "INFOS": "La sécurité de la monnaie Ğ1 repose sur chaque membre. Avant de certifier l'identité de cette personne, vous devez avoir fait quelques vérifications à son propos. Veuillez répondre aux questions suivantes :",
+ "BTN_ALL_CHECK": "Certifier",
+ "CHECKLIST_CONDITIONS_NOT_MET": "La certification n'a pas été envoyée. Les vérifications semblent insuffisantes. Veuillez vérifier de nouveau chaque point auprès de la personne à certifier.",
+ "QUESTIONS": {
+ "WELL_KNOWN": "<b>Connaissez-vous bien</b> la personne que vous certifiez, et connaissez-vous des gens qui la connaissent bien également ?",
+ "REVOCATION": "A-t-elle téléchargé son <b>document de révocation</b> et sait-elle où le retrouver ?",
+ "CONTACT": "Avez-vous <b>contacté</b> cette personne par plusieurs moyens et vous a-t-elle répondu ?",
+ "DOUBLE_IDENTITY": "La personne doit posséder <b>une seule identité membre active</b>. En possède-t-elle une <b>autre</b> ?",
+ "MASTER_ACCOUNT": "Maîtrise-t-elle son compte, et a-t-elle déjà <b>effectué au moins un virement</b> depuis son compte ?",
+ "LICENSE": "A-t-elle <b>compris la licence</b>, et accepte-t-elle de s'y conformer pour la certification d'autres membres ?",
+ "CREDENTIALS": "L’identifiant et le mot de passe de son compte sont-ils <b>longs et complexes</b> (phrases de passe) ? A-t-elle compris que l’identifiant doit également rester secret ? Est-elle <b>certaine de s’en souvenir</b> ou de pouvoir les retrouver ?",
+ "PUBLIC_KEY_DIFFERENT": "La <b>clef publique</b> indiquée doit être <b>identique</b> à celle que vous a communiqué cette personne. Les clefs sont-elles <b>différentes</b> ?"
+ },
+ "REMINDER_TITLE": "Rappel",
+ "SHORT_LICENSE_REMINDER": "<p>Vous pouvez rappeler à la personne certifiée les paramètres des certifications :</p><p>- Chaque membre peut avoir émis 100 certifications valides au maximum.</p><p>- Les certifications sont enregistrées à un intervalle de 5 jours.</p><p>- Une nouvelle identité membre doit réunir au minimum 5 certifications en moins de deux mois.</p><p>- Un membre doit renouveler son adhésion chaque année.</p><p>- Les certifications sont valides durant deux ans.</p>"
+ },
"WALLET_LIST": {
"TITLE": "Mes portefeuilles",
"BTN_NEW": "Ajouter un portefeuille",
@@ -787,7 +805,8 @@
"UNKNOWN_WALLET_ID": "Portefeuille secondaire inconnu.",
"RESTORE_WALLET_LIST_FAILED": "Échec de la restauration des portefeuilles secondaires.",
"INVALID_FILE_FORMAT": "Format de fichier invalide.",
- "SAME_TX_RECIPIENT": "Le destinataire doit être différent de l'émetteur."
+ "SAME_TX_RECIPIENT": "Le destinataire doit être différent de l'émetteur.",
+ "SELF_CERTIFICATION": "Vous ne pouvez pas certifier votre propre identité."
},
"INFO": {
"POPUP_TITLE": "Information",
diff --git a/www/js/controllers/wot-controllers.js b/www/js/controllers/wot-controllers.js
index b7d9cd2c2b31cfbaa38f359d0c9eae164a11a8f6..1a3c597e00d2669410de8fc4a31e94202fb5bcd0 100644
--- a/www/js/controllers/wot-controllers.js
+++ b/www/js/controllers/wot-controllers.js
@@ -157,6 +157,8 @@ angular.module('cesium.wot.controllers', ['cesium.services'])
.controller('WotCertificationsViewCtrl', WotCertificationsViewController)
+ .controller('WotCertificationChecklistCtrl', WotCertificationChecklistController)
+
.controller('WotSelectPubkeyIdentityModalCtrl', WotSelectPubkeyIdentityModalController)
;
@@ -773,63 +775,43 @@ function WotIdentityAbstractController($scope, $rootScope, $state, $translate, $
return;
}
- // Check identity not expired
- if ($scope.formData.requirements.expired) {
- UIUtils.alert.error('ERROR.IDENTITY_EXPIRED');
+ if ( ! $scope.commonCertificationVerifications($scope.formData, wallet) ) {
return;
}
- // Check not already certified
- var previousCert = _.find($scope.formData.received_cert, function(cert) {
- return cert.pubkey === wallet.data.pubkey && cert.valid && cert.expiresIn > csSettings.data.timeWarningExpire;
- });
- if (previousCert) {
- $translate('ERROR.IDENTITY_ALREADY_CERTIFY', previousCert)
- .then(function(message) {
- UIUtils.alert.error(message, 'ERROR.UNABLE_TO_CERTIFY_TITLE');
- });
- return;
- }
+ // Prepare actions after user confirmation
+ let answers_are_right = $q.defer();
+ answers_are_right.promise.then( function (cert_status) {
+ return $scope.showLicenseReminderIfNewCert(cert_status)
+ })
+ .then(function(confirm){
+ if (! confirm) {return}
+ UIUtils.loading.show();
+ wallet.certify($scope.formData.uid,
+ $scope.formData.pubkey,
+ $scope.formData.blockUid || ($scope.formData.requirements && $scope.formData.requirements.meta && $scope.formData.requirements.meta.timestamp),
+ $scope.formData.requirements && $scope.formData.requirements.meta && $scope.formData.requirements.meta.sig,
+ $scope.formData.isMember,
+ $scope.formData.wasMember)
+ .then(function(cert) {
+ UIUtils.loading.hide();
+ if (cert) {
+ $scope.prepareNewCert(wallet, cert);
+ $scope.alreadyCertified = true;
+ UIUtils.toast.show('INFO.CERTIFICATION_DONE');
+ $scope.formData.received_cert_pending.unshift(cert);
+ $scope.formData.requirements.pendingCertificationCount++;
+ $scope.doMotion();
+ }
+ })
+ .catch(UIUtils.onError('ERROR.SEND_CERTIFICATION_FAILED'));
+ })
+ .catch(
+ UIUtils.onError('ACCOUNT.CERTIFICATION_MODAL.CHECKLIST_CONDITIONS_NOT_MET')
+ );
- // Check no pending certification
- previousCert = _.findWhere($scope.formData.received_cert_pending, { pubkey: wallet.data.pubkey, valid: true});
- if (previousCert) {
- $translate('ERROR.IDENTITY_ALREADY_CERTIFY_PENDING', previousCert)
- .then(function(message) {
- UIUtils.alert.error(message, 'ERROR.UNABLE_TO_CERTIFY_TITLE');
- });
- return;
- }
+ return $scope.displayConfirmationModalOrLicenseQuestions($scope.formData, wallet, answers_are_right )
- UIUtils.alert.confirm('CONFIRM.CERTIFY_RULES', 'CONFIRM.POPUP_SECURITY_WARNING_TITLE', {
- cssClass: 'warning',
- okText: 'WOT.BTN_YES_CERTIFY',
- okType: 'button-assertive'
- })
- .then(function(confirm){
- if (!confirm) {
- return;
- }
- UIUtils.loading.show();
- wallet.certify($scope.formData.uid,
- $scope.formData.pubkey,
- $scope.formData.blockUid || ($scope.formData.requirements && $scope.formData.requirements.meta && $scope.formData.requirements.meta.timestamp),
- $scope.formData.requirements && $scope.formData.requirements.meta && $scope.formData.requirements.meta.sig,
- $scope.formData.isMember,
- $scope.formData.wasMember)
- .then(function(cert) {
- UIUtils.loading.hide();
- if (cert) {
- $scope.prepareNewCert(wallet, cert);
- $scope.alreadyCertified = true;
- UIUtils.toast.show('INFO.CERTIFICATION_DONE');
- $scope.formData.received_cert_pending.unshift(cert);
- $scope.formData.requirements.pendingCertificationCount++;
- $scope.doMotion();
- }
- })
- .catch(UIUtils.onError('ERROR.SEND_CERTIFICATION_FAILED'));
- });
})
.catch(function(err) {
if (err === 'CANCELLED') return;
@@ -838,6 +820,85 @@ function WotIdentityAbstractController($scope, $rootScope, $state, $translate, $
});
};
+ $scope.commonCertificationVerifications = function (receiver_idty, sender_wallet) {
+
+ // Check it is no self-certification
+ if (receiver_idty.pubkey === sender_wallet.data.pubkey) {
+ UIUtils.alert.error('ERROR.SELF_CERTIFICATION');
+ return false;
+ }
+
+ // Check identity not expired
+ if (receiver_idty.requirements.expired) {
+ UIUtils.alert.error('ERROR.IDENTITY_EXPIRED');
+ return false;
+ }
+
+ // Check not already certified
+ var previousCert = _.find(receiver_idty.received_cert, function (cert) {
+ return cert.pubkey === sender_wallet.data.pubkey && cert.valid && cert.expiresIn > csSettings.data.timeWarningExpire;
+ });
+ if (previousCert) {
+ $translate('ERROR.IDENTITY_ALREADY_CERTIFY', previousCert)
+ .then(function (message) {
+ UIUtils.alert.error(message, 'ERROR.UNABLE_TO_CERTIFY_TITLE');
+ });
+ return false;
+ }
+
+ // Check no pending certification
+ previousCert = _.findWhere(receiver_idty.received_cert_pending, { pubkey: sender_wallet.data.pubkey, valid: true });
+ if (previousCert) {
+ $translate('ERROR.IDENTITY_ALREADY_CERTIFY_PENDING', previousCert)
+ .then(function (message) {
+ UIUtils.alert.error(message, 'ERROR.UNABLE_TO_CERTIFY_TITLE');
+ });
+ return false;
+ }
+
+ return true;
+ }
+
+ $scope.showLicenseReminderIfNewCert = function (cert_status) {
+ if (cert_status == "new_cert") {
+ return UIUtils.alert.confirm(
+ 'ACCOUNT.CERTIFICATION_MODAL.SHORT_LICENSE_REMINDER',
+ 'ACCOUNT.CERTIFICATION_MODAL.REMINDER_TITLE',
+ {
+ cssClass: 'positive',
+ okText: 'COMMON.BTN_OK',
+ okType: 'button-positive'
+ }
+ )
+ }
+ return true;
+ }
+
+ $scope.displayConfirmationModalOrLicenseQuestions = function (certified_idty, sender_wallet, answers_are_right) {
+
+ if (isCertificationRenewal(certified_idty.received_cert, sender_wallet.data.pubkey)) {
+ return $scope.certRenewalConfirmationModal(answers_are_right)
+ }
+
+ return Modals.showCertificationCheckList({
+ answers_are_right: answers_are_right,
+ identity: certified_idty,
+ });
+ }
+
+ $scope.certRenewalConfirmationModal = function (answers_are_right) {
+ return UIUtils.alert.confirm('CONFIRM.CERTIFY_RULES', 'CONFIRM.CERTIFY_RULES_TITLE_UID', {
+ cssClass: 'warning',
+ okText: 'WOT.BTN_YES_CERTIFY',
+ okType: 'button-assertive'
+ })
+ .then(function (confirm) {
+ if (confirm) {
+ answers_are_right.resolve("renewal");
+ }
+ })
+ }
+
// Select an identity and certify
$scope.selectAndCertify = function() {
@@ -881,62 +942,43 @@ function WotIdentityAbstractController($scope, $rootScope, $state, $translate, $
return;
}
- // Check identity not expired
- if (identity.requirements.expired) {
- UIUtils.alert.error('ERROR.IDENTITY_EXPIRED');
+ if ( ! $scope.commonCertificationVerifications(identity, wallet) ) {
return;
}
- // Check not already certified
- var previousCert = _.findWhere(identity.received_cert, {pubkey: wallet.data.pubkey, valid: true});
- if (previousCert) {
- $translate('ERROR.IDENTITY_ALREADY_CERTIFY', previousCert)
- .then(function (message) {
- UIUtils.alert.error(message, 'ERROR.UNABLE_TO_CERTIFY_TITLE');
- });
- return;
- }
+ // Prepare actions after user confirmation
+ let answers_are_right = $q.defer();
+ answers_are_right.promise.then( function (cert_status) {
+ return $scope.showLicenseReminderIfNewCert(cert_status)
+ })
+ .then(function(confirm){
+ if (! confirm) {return}
+ UIUtils.loading.show();
+ // Send certification
+ wallet.certify(identity.uid,
+ identity.pubkey,
+ identity.blockUid || (identity.requirements && identity.requirements.meta && identity.requirements.meta.timestamp),
+ identity.requirements && identity.requirements.meta && identity.requirements.meta.sig,
+ identity.isMember,
+ identity.wasMember)
+ .then(function (cert) {
+ UIUtils.loading.hide();
+ if (!cert) return;
+ return csWot.extendAll([cert], 'pubkey')
+ .then(function () {
+ UIUtils.toast.show('INFO.CERTIFICATION_DONE');
+ $scope.formData.given_cert_pending.unshift(cert);
+ $scope.doMotion();
+ });
+ })
+ .catch(UIUtils.onError('ERROR.SEND_CERTIFICATION_FAILED'));
+ })
+ .catch(
+ UIUtils.onError('ACCOUNT.CERTIFICATION_MODAL.CHECKLIST_CONDITIONS_NOT_MET')
+ );
- // Check not pending certification
- previousCert = _.findWhere(identity.received_cert_pending, {pubkey: wallet.data.pubkey, valid: true});
- if (previousCert) {
- $translate('ERROR.IDENTITY_ALREADY_CERTIFY_PENDING', previousCert)
- .then(function (message) {
- UIUtils.alert.error(message, 'ERROR.UNABLE_TO_CERTIFY_TITLE');
- });
- return;
- }
+ return $scope.displayConfirmationModalOrLicenseQuestions(identity, wallet, answers_are_right )
- // Ask confirmation
- $translate('CONFIRM.CERTIFY_RULES_TITLE_UID', {uid: identity.uid})
- .then(function (confirmTitle) {
- return UIUtils.alert.confirm('CONFIRM.CERTIFY_RULES', confirmTitle);
- })
- .then(function (confirm) {
- if (!confirm) {
- return;
- }
- UIUtils.loading.show();
-
- // Send certification
- wallet.certify(identity.uid,
- identity.pubkey,
- identity.blockUid || (identity.requirements && identity.requirements.meta && identity.requirements.meta.timestamp),
- identity.requirements && identity.requirements.meta && identity.requirements.meta.sig,
- identity.isMember,
- identity.wasMember)
- .then(function (cert) {
- UIUtils.loading.hide();
- if (!cert) return;
- return csWot.extendAll([cert], 'pubkey')
- .then(function () {
- UIUtils.toast.show('INFO.CERTIFICATION_DONE');
- $scope.formData.given_cert_pending.unshift(cert);
- $scope.doMotion();
- });
- })
- .catch(UIUtils.onError('ERROR.SEND_CERTIFICATION_FAILED'));
- });
})
.catch(function (err) {
if (err === 'CANCELLED') return;
@@ -1447,6 +1489,88 @@ function WotCertificationsViewController($scope, $rootScope, $controller, csSett
};
}
+/**
+ * Certification checklist controller
+ * @param $controller
+ */
+ function WotCertificationChecklistController($scope, $controller, parameters){
+
+ // allow to display license
+ $controller('CurrencyViewCtrl', {$scope: $scope});
+
+ let answers_are_right = parameters.answers_are_right;
+ $scope.identity = parameters.identity;
+
+ $scope.prepare_cert_checklist = function() {
+ const original_cert_checklist = [
+ {
+ question: 'ACCOUNT.CERTIFICATION_MODAL.QUESTIONS.WELL_KNOWN',
+ expected_answer: true,
+ answer: false
+ },
+ {
+ question: 'ACCOUNT.CERTIFICATION_MODAL.QUESTIONS.REVOCATION',
+ expected_answer: true,
+ answer: false
+ },
+ {
+ question: 'ACCOUNT.CERTIFICATION_MODAL.QUESTIONS.CONTACT',
+ expected_answer: true,
+ answer: false
+ },
+ {
+ question: 'ACCOUNT.CERTIFICATION_MODAL.QUESTIONS.MASTER_ACCOUNT',
+ expected_answer: true,
+ answer: false
+ },
+ {
+ question: 'ACCOUNT.CERTIFICATION_MODAL.QUESTIONS.LICENSE',
+ expected_answer: true,
+ answer: false
+ },
+ {
+ question: 'ACCOUNT.CERTIFICATION_MODAL.QUESTIONS.CREDENTIALS',
+ expected_answer: true,
+ answer: false
+ },
+ // questions with negative answers
+ {
+ question: 'ACCOUNT.CERTIFICATION_MODAL.QUESTIONS.DOUBLE_IDENTITY',
+ expected_answer: false,
+ answer: false
+ },
+ {
+ question: 'ACCOUNT.CERTIFICATION_MODAL.QUESTIONS.PUBLIC_KEY_DIFFERENT',
+ expected_answer: false,
+ answer: false
+ },
+ ];
+
+ // Fisher-Yates shuffle
+ function shuffle(array) {
+ for (let i = array.length - 1; i > 0; i--) {
+ let j = Math.floor(Math.random() * (i + 1)); // random index from 0 to i
+ let t = array[i]; array[i] = array[j]; array[j] = t
+ }
+ return array;
+ }
+
+ return shuffle(original_cert_checklist).slice(0, 5);
+ }
+ $scope.cert_checklist = $scope.prepare_cert_checklist();
+
+ $scope.verifyAnswers = function() {
+ $scope.cert_checklist.map( question => {
+ if (question.answer !== question.expected_answer) {
+ // TODO message should be changed.
+ answers_are_right.reject();
+ }
+ });
+ answers_are_right.resolve("new_cert");
+
+ $scope.closeModal();
+ }
+}
/**
* Select identities from a pubkey (useful when many self on the same pubkey)
@@ -1491,3 +1615,9 @@ function WotSelectPubkeyIdentityModalController($scope, $q, csWot, parameters) {
};
$scope.$on('modal.shown', $scope.load);
}
+
+function isCertificationRenewal(identity_current_certs, certifier_pubkey) {
+ return _.find(identity_current_certs, function(certification) {
+ return certification.pubkey == certifier_pubkey;
+ })
+}
diff --git a/www/js/services/modal-services.js b/www/js/services/modal-services.js
index 3ff97d62e0d469c9653ee2644194a38a42a6bdf6..4cd65471a2a62aa944379cf7c0a9927ef24a1cdd 100644
--- a/www/js/services/modal-services.js
+++ b/www/js/services/modal-services.js
@@ -232,6 +232,10 @@ angular.module('cesium.modal.services', ['cesium.utils.services'])
parameters);
}
+ function showCertificationCheckList(parameters) {
+ return ModalUtils.show('templates/wot/modal_certification_checklist.html','WotCertificationChecklistCtrl', parameters);
+ }
+
function showSelectPubkeyIdentity(parameters) {
return ModalUtils.show('templates/wot/modal_select_pubkey_identity.html', 'WotSelectPubkeyIdentityModalCtrl',
parameters);
@@ -294,6 +298,7 @@ angular.module('cesium.modal.services', ['cesium.utils.services'])
showHelp: showHelp,
showAccountSecurity: showAccountSecurity,
showLicense: showLicense,
+ showCertificationCheckList: showCertificationCheckList,
showSelectPubkeyIdentity: showSelectPubkeyIdentity,
showSelectWallet: showSelectWallet,
showPassword: showPassword
diff --git a/www/templates/wot/item_checklist_certification.html b/www/templates/wot/item_checklist_certification.html
new file mode 100644
index 0000000000000000000000000000000000000000..a4e5b9834b3c1b066d3d2882ef18b86dcd17a11e
--- /dev/null
+++ b/www/templates/wot/item_checklist_certification.html
@@ -0,0 +1,17 @@
+<div class="col col-80">
+ <div class="ion-text text-wrap" ng-bind-html="check.question | translate"></div>
+ </div>
+ <div class="col text-right">
+ <div class="ion-text" style="text-transform: uppercase;">
+ <b ng-if="check.answer" translate>COMMON.BTN_YES</b>
+ <b ng-if="!check.answer" translate>COMMON.BTN_NO</b>
+ </div>
+ </div>
+ <div class="col float-left">
+ <label class="toggle toggle-royal">
+ <input type="checkbox" ng-model="check.answer">
+ <div class="track">
+ <div class="handle"></div>
+ </div>
+ </label>
+ </div>
\ No newline at end of file
diff --git a/www/templates/wot/modal_certification_checklist.html b/www/templates/wot/modal_certification_checklist.html
new file mode 100644
index 0000000000000000000000000000000000000000..6fdfd8af4fad51664f97da1aaabb60d1d052d5ec
--- /dev/null
+++ b/www/templates/wot/modal_certification_checklist.html
@@ -0,0 +1,82 @@
+<ion-modal-view class="modal-full-height">
+
+ <!-- TOP BAR -->
+ <ion-header-bar class="bar-positive">
+
+ <button class="button button-clear visible-xs"
+ ng-if="!slides.slider.activeIndex"
+ ng-click="closeModal()" translate>COMMON.BTN_CANCEL
+ </button>
+ <button class="button button-icon button-clear icon ion-ios-arrow-back buttons header-item"
+ ng-click="doPrev()"
+ ng-if="slides.slider.activeIndex && slideBehavior.hasPreviousButton">
+ </button>
+ <button class="button button-icon button-clear icon ion-ios-help-outline visible-xs"
+ ng-if="slideBehavior.helpAnchor"
+ ng-click="showHelpModal(slideBehavior.helpAnchor)">
+ </button>
+
+ <h1 class="title" translate>ACCOUNT.CERTIFICATION_MODAL.CHECKLIST_TITLE</h1>
+
+ <!-- next -->
+ <button class="button button-clear icon-right visible-xs"
+ ng-if="slideBehavior.hasNextButton"
+ ng-click="doNext()">
+ <span translate>COMMON.BTN_NEXT</span>
+ <i class="icon ion-ios-arrow-right"></i>
+ </button>
+ <!-- accept -->
+ <button class="button button-clear icon-right visible-xs"
+ ng-class="{'button-text-stable': !isLicenseRead}"
+ ng-if="slideBehavior.hasAcceptButton"
+ ng-click="isLicenseRead ? doNext() : undefined">
+ <span translate>ACCOUNT.NEW.BTN_ACCEPT</span>
+ <i class="icon ion-ios-arrow-right"></i>
+ </button>
+ <!-- send -->
+ <button class="button button-clear icon-right visible-xs"
+ ng-if="slideBehavior.hasSendButton"
+ ng-click="doNewAccount()">
+ <i class="icon ion-android-send"></i>
+ </button>
+ </ion-header-bar>
+
+
+ <!-- CONTENT -->
+ <ion-content class="has-header" scroll="true">
+
+ <div class="padding text-center" ><b>
+ {{ identity.uid }} - {{:rebind:identity.pubkey|formatPubkey: {full: true, checksum: formData.checksum} }}
+ </b></div>
+
+ <div class="padding" translate>ACCOUNT.CERTIFICATION_MODAL.INFOS</div>
+
+ <div class="card padding">
+ <div class="row nowrap row-center"
+ ng-repeat="check in cert_checklist"
+ ng-include="::'templates/wot/item_checklist_certification.html'">
+ </div>
+ </div>
+
+
+ <div class="padding text-right">
+
+ <button class="button button-clear button-dark ink hidden-xs" ng-click="closeModal()" type="button" translate>
+ COMMON.BTN_CANCEL
+ </button>
+
+ <button class="button button-stable icon-right ink"
+ ng-if="formData.licenseUrl"
+ ng-click="showLicenseModal()">
+ <i class="icon ion-document-text"></i>
+ {{'CURRENCY.VIEW.BTN_SHOW_LICENSE' | translate}}
+ </button>
+
+ <button class="button button-positive icon-right ion-chevron-right ink" ng-click="verifyAnswers()"
+ type="button" translate>
+ ACCOUNT.CERTIFICATION_MODAL.BTN_ALL_CHECK
+ </button>
+
+ </div>
+ </ion-content>
+</ion-modal-view>
\ No newline at end of file