Flutter qrcode reader

Overview

QRCode Reader plugin for Flutter

A Flutter plugin for reading QR Codes with the camera.

Example

import 'package:qrcode_reader/qrcode_reader.dart';
Future<String> futureString = new QRCodeReader()
               .setAutoFocusIntervalInMs(200) // default 5000
               .setForceAutoFocus(true) // default false
               .setTorchEnabled(true) // default false
               .setHandlePermissions(true) // default true
               .setExecuteAfterPermissionGranted(true) // default true
               .setFrontCamera(false) // default false
               .scan();

These options are Android only (with the exception of setFrontCamera(bool)), this is the simplest way of plugin usage:

Future<String> futureString = new QRCodeReader().scan();
Comments
  • Failed to create MD5 hash

    Failed to create MD5 hash

    It is possible that I am screwing things up, but I am getting this error:

     FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':qrcode_reader:compileReleaseJavaWithJavac'.
    > Failed to create MD5 hash for file 'C:\Users\tsort\AppData\Roaming\Pub\Cache\hosted\pub.dartlang.org\qrcode_reader-0.1.1\android\tmplibs\flutter.jar'.
    
    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
    Finished with error: Gradle build failed: 1
    

    Good luck developing the plugin!

    opened by cstsortan 18
  • Unhandled exception: MissingPluginException(No implementation found for method readQRCode on channel qrcode_reader)

    Unhandled exception: MissingPluginException(No implementation found for method readQRCode on channel qrcode_reader)

    Hello,

    I've been running the library in an app on my Nexus 6 and it has been working fine, except for once when it gave me the following error:

    08-10 14:52:36.099 18253-18471/com.londonsockcompany.sockspotter E/flutter: [ERROR:topaz/lib/tonic/logging/dart_error.cc(16)] Unhandled exception: MissingPluginException(No implementation found for method readQRCode on channel qrcode_reader) #0 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:278:7) <asynchronous suspension> #1 QRCodeReader.scan (package:qrcode_reader/QRCodeReader.dart:67:27) <asynchronous suspension> #2 CorrectSockState.build.<anonymous closure> (package:sock_spotter/components/correct_sock.dart:54:30) #3 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:494:14) #4 _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:549:30) #5 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24) #6 TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:161:9) #7 TapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:123:7) #8 GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:156:27) #9 _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:147:20) #10 _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:121:22) #11 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:101:7) #12 _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:64:7) #13 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:48:7) #14 _invoke1 (dart:ui/hooks.dart:134:13) #15 _dispatchPointerDataPacket (dart:ui/hooks.dart:91:5)

    It happened in the middle of a presentation (never do a live demo!) but hasn't occurred since. Any idea what happened? Can I provide any more debug info? It has been working fine on a Pixel XL and iPhone X.

    Thanks

    opened by dixonl90 9
  • Error building project

    Error building project

    [public class QRCodeReaderPlugin implements MethodCallHandler, ActivityResultListener, PluginRegistry.RequestPermissionResultListener {
                                                                                                        ^
      symbol:   class RequestPermissionResultListener
      location: interface PluginRegistry
    C:\..\AppData\Roaming\Pub\Cache\hosted\pub.dartlang.org\qrcode_reader-0.3.2\android\src\main\java\com\matheusvillela\flutter\plugins\qrcodereader\QRCodeReaderPlugin.java:63: error: cannot find symbol
                registrar.addRequestPermissionResultListener(instance);
                         ^
      symbol:   method addRequestPermissionResultListener(QRCodeReaderPlugin)
      location: variable registrar of type Registrar](url)
    
    error: method does not override or implement a method from a supertype
        @Override
        ^
    
    opened by f1010 9
  • Status of this project?

    Status of this project?

    Currently there're two variants of the QRCode Reader project:

    1. https://github.com/bcko/flutter_qrcode_reader, corresponds to https://pub.dartlang.org/packages/qrcode_reader
    2. https://github.com/PonnamKarthik/QRCodeReaderFlutter, corresponds to https://pub.dartlang.org/packages/qr_reader (Difference is qrcode vs qr in the Pub package name.)

    Looks like the background story is this:

    1. @villela started the project originally. (https://github.com/villela/flutter_qrcode_reader)
    2. At some point it's no longer maintained.
    3. @PonnamKarthik started a fresh repo by copying the project (not forking) and add update.
    4. @villela's project transferred to @bcko

    And the current status is like this:

    1. @bcko's version keeps project history, continue accepting pull requests, but no new version is published on Pub.
    2. @PonnamKarthik's version doesn't keep project history, contains different fixes (mainly by the author himself), have a Dart 2 compatible version published on Pub.

    Obviously two diverged versions of the same project isn't the best for the project maintainers, the users and the potential contributers. So before both go too far away I have two suggestions here:

    1. Obsolete one of the project. If @PonnamKarthik agree, I'd suggest to continue working on @bcko's version (as it keeps a more complete commit history), merge patches from @PonnamKarthik, publish a new version, and obsolete @PonnamKarthik's one. (I don't know, is it possible for @bcko grant the right to someone else to publish new version on pub?)
    2. Evaluate if there's a more active project working on similar features, and ask people to focus the contribution effort to that project. This is of course said, but might be the best solution if the authors of the two projects are too busy to keep the projects maintained.

    These are just my uninformed opinions, I really don't know the status of both authors. In closing, I'd like to thank @bcko and @PonnamKarthik for your effort on the project.

    opened by tamcy 8
  • QR Dependencies are not working

    QR Dependencies are not working

    I get this error and it seems to be pointing towards qr_reader, here are my logs:

    Launching lib\main.dart on Android SDK built for x86 in debug mode...
    Initializing gradle...
    Resolving dependencies...
    Running 'gradlew assembleDebug'...
    Configuration 'compile' in project ':qrcode_reader' is deprecated. Use 'implementation' instead.
    C:\Users\[user]\development\flutter\.pub-cache\hosted\pub.dartlang.org\qrcode_reader-0.3.3\android\src\main\java\com\matheusvillela\flutter\plugins\qrcodereader\QRCodeReaderPlugin.java:42: error: cannot find symbol
    public class QRCodeReaderPlugin implements MethodCallHandler, ActivityResultListener, PluginRegistry.RequestPermissionResultListener {
                                                                                                        ^
      symbol:   class RequestPermissionResultListener
      location: interface PluginRegistry
    C:\Users\[user]\development\flutter\.pub-cache\hosted\pub.dartlang.org\qrcode_reader-0.3.3\android\src\main\java\com\matheusvillela\flutter\plugins\qrcodereader\QRCodeReaderPlugin.java:63: error: incompatible types: QRCodeReaderPlugin cannot be converted to RequestPermissionsResultListener
                registrar.addRequestPermissionsResultListener(instance);
                                                              ^
    C:\Users\[user]\development\flutter\.pub-cache\hosted\pub.dartlang.org\qrcode_reader-0.3.3\android\src\main\java\com\matheusvillela\flutter\plugins\qrcodereader\QRCodeReaderPlugin.java:155: error: method does not override or implement a method from a supertype
        @Override
        ^
    Note: C:\Users\[user]\development\flutter\.pub-cache\hosted\pub.dartlang.org\qrcode_reader-0.3.3\android\src\main\java\com\matheusvillela\flutter\plugins\qrcodereader\QRCodeReaderPlugin.java uses unchecked or unsafe operations.
    Note: Recompile with -Xlint:unchecked for details.
    Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
    3 errors
    
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':qrcode_reader:compileDebugJavaWithJavac'.
    > Compilation failed; see the compiler error output for details.
    
    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
    
    * Get more help at https://help.gradle.org
    
    BUILD FAILED in 1s
    Finished with error: Gradle build failed: 1
    

    Any help is appreciated!

    opened by kyledampier 8
  • fixes the crash while building the APK

    fixes the crash while building the APK

    Android Resources of 25 compile SDK does not match with that of 28

    1: Task failed with an exception.                                       
    -----------                                                             
    * What went wrong:                                                      
    Execution failed for task ':qrcode_reader:verifyReleaseResources'.      
    > A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
       > Android resource linking failed                                    
         /home/harsh/.gradle/caches/transforms-2/files-2.1/79a43a903ecb6dc82204ee669e724ddc/core-1.0.0/res/values/values.xml:57:5-88:25: AAPT: error: resource android:attr/fontStyle not found.
                                                                            
         /home/harsh/.gradle/caches/transforms-2/files-2.1/79a43a903ecb6dc82204ee669e724ddc/core-1.0.0/res/values/values.xml:57:5-88:25: AAPT: error: resource android:attr/font not found.
                                                                            
         /home/harsh/.gradle/caches/transforms-2/files-2.1/79a43a903ecb6dc82204ee669e724ddc/core-1.0.0/res/values/values.xml:57:5-88:25: AAPT: error: resource android:attr/fontWeight not found.
                                                                            
         /home/harsh/.gradle/caches/transforms-2/files-2.1/79a43a903ecb6dc82204ee669e724ddc/core-1.0.0/res/values/values.xml:57:5-88:25: AAPT: error: resource android:attr/fontVariationSettings not found.
                                                                            
         /home/harsh/.gradle/caches/transforms-2/files-2.1/79a43a903ecb6dc82204ee669e724ddc/core-1.0.0/res/values/values.xml:57:5-88:25: AAPT: error: resource android:attr/ttcIndex not found.
    
    
    opened by daadu 4
  • Can't compile, Error running Gradle

    Can't compile, Error running Gradle

    When I try to compile on Windows and MacOS I get errors.

    Windows error:

    Launching lib\main.dart on Vivo 8 in debug mode...
    Configuration 'compile' in project ':qrcode_reader' is deprecated. Use 'implementation' instead.
    D:\flutter\.pub-cache\hosted\pub.dartlang.org\qrcode_reader-0.3.3\android\src\main\java\com\matheusvillela\flutter\plugins\qrcodereader\QRCodeReaderPlugin.java:42: error: cannot find symbol
    public class QRCodeReaderPlugin implements MethodCallHandler, ActivityResultListener, PluginRegistry.RequestPermissionResultListener {
                                                                                                        ^
      symbol:   class RequestPermissionResultListener
      location: interface PluginRegistry
    D:\flutter\.pub-cache\hosted\pub.dartlang.org\qrcode_reader-0.3.3\android\src\main\java\com\matheusvillela\flutter\plugins\qrcodereader\QRCodeReaderPlugin.java:63: error: incompatible types: QRCodeReaderPlugin cannot be converted to RequestPermissionsResultListener
                registrar.addRequestPermissionsResultListener(instance);
                                                              ^
    D:\flutter\.pub-cache\hosted\pub.dartlang.org\qrcode_reader-0.3.3\android\src\main\java\com\matheusvillela\flutter\plugins\qrcodereader\QRCodeReaderPlugin.java:155: error: method does not override or implement a method from a supertype
        @Override
        ^
    Note: D:\flutter\.pub-cache\hosted\pub.dartlang.org\qrcode_reader-0.3.3\android\src\main\java\com\matheusvillela\flutter\plugins\qrcodereader\QRCodeReaderPlugin.java uses unchecked or unsafe operations.
    Note: Recompile with -Xlint:unchecked for details.
    Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
    3 errors
    
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':qrcode_reader:compileDebugJavaWithJavac'.
    > Compilation failed; see the compiler error output for details.
    
    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
    
    * Get more help at https://help.gradle.org
    
    BUILD FAILED in 12s
    Gradle build failed: 1
    Exited (sigterm)
    

    I will post MacOS error during the week! (Although is the same, iirc)

    opened by facundomedica 4
  • IOS version of qrcode_reader

    IOS version of qrcode_reader

    Dear Mattheus, I have created an IOS version of the qrcode_reader.

    It is still a bit rough, but works. Please let me know if you want to incorporate it, otherwise I'll fork and publish it as an ios version.

    I'd rather not.

    Kind regards, Johan Henselmans

    opened by johanhenselmans 3
  • Half the screen goes white when holding the phone horizontally

    Half the screen goes white when holding the phone horizontally

    When you hold the phone (in this case an iPhone X) horizontally, the view switches to a new layout. where only the top half of the screen is the camera, the bottom half is white. You can only see the "Ca" of the "Cancel" button on the right side of the screen. Example: https://www.dropbox.com/s/0603ajyixd9jxpp/tiltBug.mov?dl=0

    opened by mploigt 2
  • Issue with QR CODE when using it second time

    Issue with QR CODE when using it second time

    I am using this plugin

    First time while using the app the QR Code works fine, but when i minimize the app i.e. when its running in the background, then i come back again and try to use, its giving the following error.

    It is working on IOS but not working on Android,

    Detailed error below

    E/flutter ( 4790): [ERROR:flutter/shell/common/shell.cc(184)] Dart Error: Unhandled exception: E/flutter ( 4790): MissingPluginException(No implementation found for method readQRCode on channel qrcode_reader) E/flutter ( 4790): #0 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:291:7) E/flutter ( 4790): E/flutter ( 4790): #1 QRCodeReader.scan (package:qrcode_reader/qrcode_reader.dart:67:27)

    please can someone assist on this

    thanks

    opened by mohdyasar 2
  • Can't install it  for dart sdk 2.1

    Can't install it for dart sdk 2.1

    Hello I get this error frop pubspec:

    The current Dart SDK version is 2.1.0-dev.5.0.flutter-a2eb050044.

    depends on qrcode_reader >=0.1.1 which requires SDK version >=1.8.0 <2.0.0, version solving failed.

    opened by mbdax034 2
  • I cannot use this plugin It has this error

    I cannot use this plugin It has this error

    E/flutter (12364): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: MissingPluginException(No implementation found for method readQRCode on channel qrcode_reader) E/flutter (12364): #0 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:319:7) E/flutter (12364):
    E/flutter (12364): #1 QRCodeReader.scan (package:qrcode_reader/qrcode_reader.dart:74:27)

    I tried with all the same issues but still the same error.

    qrcode_reader: git: https://github.com/bcko/flutter_qrcode_reader.git

    opened by hieuh0 5
  • Android app just crashes on startup just by adding the plugin to pubspec.yaml

    Android app just crashes on startup just by adding the plugin to pubspec.yaml

    Just by simply adding the package the Android version crashes on startup. iOS works perfectly in debug and released version. We are not refering to the qrcode_reader anywhere in our code. We have android.permission.CAMERA in uses.permissions. Removing the package from pubspec.yaml gets the app going on Android again.

    dependencies:
      flutter:
        sdk: flutter
      http: ^0.12.0
      shared_preferences: ^0.5.6
      qrcode_reader:
        git:
          url: git://github.com/bcko/flutter_qrcode_reader.git
          ref: f47a459
    
      # The following adds the Cupertino Icons font to your application.
      # Use with the CupertinoIcons class for iOS style icons.
      cupertino_icons: ^0.1.2
    
    dev_dependencies:
      flutter_test:
        sdk: flutter
    

    Flutter doctor.

    ➜  flutter_poc git:(impersonate-with-qrcode) ✗ flutter doctor -v
    [✓] Flutter (Channel beta, v1.13.6, on Mac OS X 10.15.2 19C57, locale en-GB)
        • Flutter version 1.13.6 at /Users/plauri/.applications/flutter
        • Framework revision 659dc8129d (3 weeks ago), 2019-12-30 09:24:47 -0800
        • Engine revision bdc9708d23
        • Dart version 2.8.0 (build 2.8.0-dev.0.0 c547f5d933)
    
    [✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
        • Android SDK at /Users/plauri/Library/Android/sdk
        • Android NDK location not configured (optional; useful for native profiling support)
        • Platform android-28, build-tools 28.0.3
        • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
        • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)
        • All Android licenses accepted.
    
    [✓] Xcode - develop for iOS and macOS (Xcode 11.3)
        • Xcode at /Applications/Xcode.app/Contents/Developer
        • Xcode 11.3, Build version 11C29
        • CocoaPods version 1.8.4
    
    [✓] Chrome - develop for the web
        • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
    
    [!] Android Studio (version 3.2)
        • Android Studio at /Applications/Android Studio.app/Contents
        ✗ Flutter plugin not installed; this adds Flutter specific functionality.
        ✗ Dart plugin not installed; this adds Dart specific functionality.
        • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)
    
    [✓] VS Code (version 1.41.1)
        • VS Code at /Applications/Visual Studio Code.app/Contents
        • Flutter extension version 3.7.1
    
    [✓] Connected device (3 available)
        • PRA LX1    • 8NH7N17B04000425 • android-arm64  • Android 8.0.0 (API 26)
        • Chrome     • chrome           • web-javascript • Google Chrome 79.0.3945.130
        • Web Server • web-server       • web-javascript • Flutter Tools
    
    ! Doctor found issues in 1 category.
    
    opened by peterlauri 13
  • Fix layout for iPads running iOS 13.0

    Fix layout for iPads running iOS 13.0

    When running the QRCode Scanner on iPads running iOS 13.0, the cancel button isn't visible.

    Also, the scanner opens up as a pop-up rather than a full-screen scanner.

    opened by ShivamArora 2
  • A problem occurred evaluating root project 'qrcode_reader'.

    A problem occurred evaluating root project 'qrcode_reader'.

    FAILURE: Build failed with an exception.

    • Where: Build file '/Users/yourks/.pub-cache/hosted/pub.flutter-io.cn/qrcode_reader-0.4.4/android/build.gradle' line: 42

    • What went wrong: A problem occurred evaluating root project 'qrcode_reader'.

    Could not find method implementation() for arguments [com.dlazaro66.qrcodereaderview:qrcodereaderview:2.0.2@aar, build_ar93f4iz1m8gb2ardj8w32nso$_run_closure3$_closure9@36b99a34] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

    • Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

    Flutter 1.10.14 • channel master • https://github.com/flutter/flutter.git Framework • revision 1946fc4da0 (3 weeks ago) • 2019-10-07 15:23:31 -0700 Engine • revision 1d62160fdb Tools • Dart 2.6.0 (build 2.6.0-dev.1.0 d6c6d12ebf)

    opened by YourksChan 0
Owner
BC Ko
BC Ko
Flutter Plugin for Google ML Kit Vision

A Flutter plugin to use the capabilities of on-device Google ML Kit

Brian M Tully 39 Oct 10, 2022
Flutter qrcode reader

QRCode Reader plugin for Flutter A Flutter plugin for reading QR Codes with the camera. Example import 'package:qrcode_reader/qrcode_reader.dart'; Fut

BC Ko 226 Nov 22, 2022
Iridium-reader-widget - Plug and play reader widget allowing to easily integrate an Iridium viewer inside any app

Plug and play reader widget allowing to easily integrate an Iridium viewer insid

Mantano 15 Dec 31, 2022
Flutter QRCode Scanner APP

Flutter QRCode Scanner APP Show some ❤️ and star the repo to support the project

BAGUS BUDI SATOTO 9 Dec 5, 2022
A flutter plugin for decode and genrate emv-mpm qrcode

A flutter plugin for decode and genrate emv-mpm qrcode

null 2 Jun 13, 2022
versão premium do app aoo Scanner-QRCode

scannerqrcode_premium A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you st

Vinícius Dadário de Freitas 2 Feb 20, 2022
QRCode Generator and QR Scanner

QRCode Scanner Flutter App Functionality : Generate QR code from text Share QR Code Scan QR Code using camera and get text result This project is a st

null 2 Sep 27, 2022
Flutter NFC reader plugin for iOS and Android

Flutter NFC Reader & Writer A new flutter plugin to help developers looking to use internal hardware inside iOS or Android devices for reading and wri

Matteo Crippa 321 Dec 30, 2022
A Fast QR Reader widget for Flutter. For both Android and iOS

Fast QR Reader View Plugin See in pub A Flutter plugin for iOS and Android allowing access to the device cameras to scan multiple type of codes (QR, P

null 287 Dec 29, 2022
Simple manga reader app for MangaSee, built with Flutter

MAPI Simple manga reader app for MangaSee. Mind that this is my very first attempt on using Flutter. Why I wanted to try out Flutter, and i needed an

Simone 17 Nov 21, 2022
News Reader App to fetch Articles from different news channels using Flutter.

News Reader This app is made using the Flutter framework. Its an mobile app to browse the News from different channels. This app uses an API provided

Sahil Kumar 84 Apr 13, 2022
A very basic manga reader made using flutter and the Mangadex API

Fludex A very basic manga reader made using flutter and mangadex API. It uses the mangadex_library package. A few things to remember The app only supp

null 11 Oct 27, 2022
A simple Hacker News reader made with Flutter.

hacki A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this is

Jiaqi Feng 428 Jan 5, 2023
Gatrabali-app - BaliFeed (formerly Gatra Bali) - News reader app built using Flutter

BaliFeed (formerly Gatra Bali) - Balinese News Reader App Balinese news reader app built using Flutter, available on Google Play: https://play.google.

Apps4Bali 41 Jan 6, 2023
Stingray is a modern, beautiful Hacker News reader app built in Flutter.

Stingray Stingray is a new, modern, beautiful Hacker News reader app. Images made with previewed.app There are a bunch of nice looking Reddit apps, bu

Edison Yap 29 Nov 5, 2022
📖 A light novel e-reader build with Flutter

?? Light Light is a light novel e-reader build with Flutter, welcome star and fork, expect your advices 。( •̀ ω •́ )✧ 中文版 Features Import local books

creatint 226 Nov 10, 2022
A E-Hentai reader written in Flutter.

EH Redux A E-Hentai reader written in Flutter. This project is still under development. Some features are not implemented yet. Requirements Android 4.

Tommy Chen 92 Dec 20, 2022
E-Invoice QR Code Reader KSA Flutter Application

E-Invoice QR Code Reader KSA Flutter Application E-Invoice QR Reader: This application was developed with the aim of displaying the QR Code contents o

Mohammed Zeidan 5 Sep 23, 2022
null 357 Dec 27, 2022
Music reader for online data (Google Drive implementation). Cross platform goal : iOS, Android, MacOS, Windows

omusic A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this i

JeanNicolasdeLamballerie 0 Nov 30, 2021